2 :
デフォルトの名無しさん :03/09/16 20:21
はーはっはっは いとも簡単に2ゲットできるぜ 文句あるなら言ってみろ
4 :
デフォルトの名無しさん :03/09/18 10:07
うあー保存してねぇよ・・・ ネ申のかきこみは、 ・メモリー確保変更パッチ ・Lua弾幕 ぐらいかな? あとは、GCの話題で少々。
>>4 暫く書き込みが無いから寂しいと思ってたよ。
暫くスレの存在自体を忘れていたよ
8 :
デフォルトの名無しさん :03/09/19 10:39
でまーニュースとしては、 LuaEclipse でしょ。やっとでたって感じだね
マジデスカ。 さっそくインスト。
保守
色々と神光臨キボン。
このスレタイ、どうしても プログラミング言(゚Д゚)ゴルァ としか読めん。
そういえば、GoLua はどうなった?
CoRoutine内のエラーを調べる方法はないものか・・・
前スレあるけどどうすればいいの?
>>16 めんどいよー。どこかあpろだないっすか?
>>18 ナ ゝ ナ ゝ / 十_" ー;=‐ |! |!
cト cト /^、_ノ | 、.__ つ (.__  ̄ ̄ ̄ ̄ ・ ・
22 :
デフォルトの名無しさん :03/09/29 14:34
ライトウェイトLanguageスレにすれば、よかったね
公式サイトもいまいち動きないからなぁ。 世代別GCはどうなってんだYO!(MLは読んでない)
世代別にしたからって、止まらなくなるわけでもなく。
単なる Generational じゃなくって Incremental Generational なんじゃないの?
>>24 まぁ、俺はそこまでのリアルタイム性は求めてないからな…
とりあえず、「GC時間が全オブジェクト数に比例する」ってのが緩和されればOK。
luaで何をするか それが問題だ
Cintも使い始めてるんだが、色々わからん。
保守
>>18 >CoRoutine内のエラーを調べる方法はないものか・・・
Resumeの戻り値にエラーのストリングはいります。
そういえば、coroutineの実行が終わったかどうかも エラー調べないとわかんないんだよね。
非同期との戦いでは、エラーチェックは必須スキルです。
保守
34 :
デフォルトの名無しさん :03/10/14 17:24
早くも落ちそうな勢いやね。 公式サイトも↓こんな動きしかないし… 28 Jul 1993 Lua 1.0 was up and running. This is the earliest implementation of Lua that we have found to date.
>34 …何か違わないか?
正直、JavaScript覚えた方が良い気がする。 なんか似てるし。
組み込み用JavaScriptも何種類かあるけど、速度的にはどうなんだろ?
>>35 「we have found to date.」ね。
はてなアンテナの差分を信じるなら、この文が10/11に追加されてる。
LuaをC/C++と連携させる目的以外で、 なにかメリットを探そうとしないほうがいいと思う。 連携させない前提で他言語との比較は、なんだかなぁって感じる。 >組み込み用JavaScript ものすご気になるw
>39 おぉサンクス! 中間言語にコンパイルするのかどうか、調べてみます。
njsはソース見りゃわかるけどコンパイルするよ。 コンパイラをバイトコ−ドの形式で配布してるから 改造二次配布防止のセキュリティもばっちりだべ
luaで、数行にわたるプログラムのコメントアウト 全部に--つけるのめんどくさい、あなたに。 rem= { [[ ... ... ]] } で囲んでしまうと。(つまんなくてすまそ・・・)
複数行コメント --[[ ...... ]] があるっしょ?
はずかしいかぎり・・・。
C/C++と連携して使う時に威力を発揮する言語なら なるべくC/C++と文法を同じにしてほしかったなぁ
俺はあんまり気にならないな。 普段から複数言語を使い分けてるせいだろうか?
>45 それ、めちゃくちゃ同意! そうだったら、もっとはやってたような気がする・・(日本で)
このスレはやく消費して 組み込み用(もしくは軽量)言語スレにしようぜ。 という漏れはLUAに激しく萌えています(今は)
Lua5.0 で lua_getn ないんすけど(´д`;)
ぅお古かっただけでした THluaの古いじゃん! コンパイル面倒くせー
>>48 このままここで軽量言語スレしてもいいんじゃない?
とりあえず、ネタを出してみれ。
もりあがるようなら、ココ放置してスレ立てよう。
>>45 ただ、
* 文字列はどうする?
* 型宣言したい?
* プリプロセッサ?
* C の標準ライブラリって使いやすい?
とか考えてくと、C のようで C じゃない気持ち悪い言語になるかも。
creat 問題に似てる。
>>52 文法と機能は分けて考えれるんじゃない?
if x ~= 0 then
..
end
を
if(x != 0){
..
}
と書きたいとか、そういう話でそ?
文字列もテーブルも今のままでいいし。
でもCの文法には文字列連結演算子や累乗演算子ないよねぇ。匿名の関数も・・・
無名についてはgccの拡張に習えばいいんじゃねーの
small 文法がCににてます。
luaもそうだけど、smallはインタプリタがなんか使いにくかったよ。 smallはJITで超速くなるよ。
インタプリタが使いやすい(Cから使いやすいって意味?)言語を上げてもらえるとうれしいかもかも。
そういえば、
Lightweight Languages 2003 (LL3)
http://ll3.ai.mit.edu/ こんなのやってるんだね。
去年はRubyも発表してたみたいだが、RubyもLightweightなの?
smallって今話題のHL2の前の奴に使われてたらしいね。
>54ので、selfをthisにしたら、もっとLUA好きになるかもしれん。 こめんとアウトもこれ。 // /* */ こんな感じでGoLuaにならんかしら。
パーサを書き換える?
問題はブロックかな。 do end -> { } にしたときのテーブルの定義とかぶらんかな。 Luaのパーサ、混乱するんでない? do until もあやしい。
たぶん大丈夫だろう・・・ {}.x = 4 とかいうアホなコードは意味ないから、文頭に{が現れたらブロック、で単純にいけると思う。
質問です。 Luaから呼び出されるCの関数で、 テーブルを返すのはどうしたらいいの? いま、点の座標を返す関数を つくってるんだけど・・・ lua_pushnumber( L, x); lua_pushnumber( L, y); lua_pushnumber( L, z); return( 3 ); これをテーブルで返したいっす。 よろしくお願いします〜
/* 多分こうじゃないかと。 */ /* Create new table. */ lua_newtable(L); /* Push x. */ lua_pushstring(L,"x"); lua_pushnumber(L,x); lua_settable(L,-3); /* Push y. */ lua_pushstring(L,"y"); lua_pushnumber(L,y); lua_settable(L,-3); /* P(ry */ lua_pushstring(L,"z"); lua_pushnumber(L,z); lua_settable(L,-3); return 1;
>72 ぬおおお!サンクス!! ありがとうございます!
>74 ほぉぉ・・ Rubyもはいってんじゃんね。 ゲームつくるのにはさ、LuaのCoroutineがめちゃ便利 だと思うんだけどさ・・ Pythonにはなんかあったよね、ファイバーだっけか? Rubyにはそんなのあんの?
Thread
Rubyはそもそも継続をサポートしてなかったっけ?
78 :
デフォルトの名無しさん :03/11/04 08:55
Rubyをゲームに組み込んで使った例ってあるのかな? そっちのほうが気になる。
ゲームとはちょっと違うが、伺かの偽AI用のスクリプトにRubyを使うってのは 二つほど見たことがある。
81 :
デフォルトの名無しさん :03/11/06 10:44
GDC2004だった。。。sage
83 :
デフォルトの名無しさん :03/11/11 05:41
保守age
lua そのものに絞った本はまだ出版されてないのですか? 英語 or 日本語で。 ポルトガル語だとありそうだけど。
http://www.lua.org/docs.html ↑ここに、「The first draft of the book "Programming in Lua" by
R. Ierusalimschy is now available. 」とか書きかけの奴があるけど
全然更新されて無いね。
本だすほど、複雑でも無いんじゃないかな・・・
複雑だから本出せと言ってるのではない。
mingwでコンパイルしてlua.exeとかを 作りたいのですがどうやればいいですか? configファイルを変更しないとダメですか?
FAQとBuilding Lua読んでもわからないDQNでも コンパイルできる方法を教えてください神様!
91 :
デフォルトの名無しさん :03/11/16 17:23
Building Lua にずばり書いてあるじゃない。
(Windows) mingw-msys Here are config [2] and Makefile [3] samples used successfully to build Lua 5.0-beta (with the LuaBinaryModules enhancements). No changes are necessary to the Makefiles in Lua's subdirectories. Use the target dll (i.e., "make dll") to build everything with lua.exe and luac.exe using lua.dll and lualib.dll. これだけではわかりかねまする。
何をやってどうだめだったかを書いてみて。 コピペ貼られても困る。
>>93 まず、configを開いてみたら
# == CHANGE THE SETTINGS BELOW TO SUIT YOUR ENVIRONMENT =======
とあるので読み進めると、
# On Windows systems. support for dynamic loading is enabled by default.
# To disable this support, uncomment the next line.
#
#LOADLIB= -DUSE_DLL=0
とか
# The Lua IO library (src/lib/liolib.c) has support for pipes using popen and
# pclose. This support is enabled by default on POSIX systems.
# If your system is not POSIX but has popen and pclose, define USE_POPEN=1.
# If you don't want to support pipes, define USE_POPEN=0.
#
#POPEN= -DUSE_POPEN=1
#POPEN= -DUSE_POPEN=0
というふうに何かの注意書きがあって、一行空けた後に式が書いてある。
ここをどう変更すればいいのかわからない。
それと、
>>92 の
No changes are necessary to the Makefiles in Lua's subdirectories.
Use the target dll (i.e., "make dll") to build everything with lua.exe
and luac.exe using lua.dll and lualib.dll.
の意味がよくわからない。
なんとなくつかんだ印象は、configを自分の環境にあうように変更してから
MSYS(mingw)を使ってmakeと打てばバババババババーとコンパイルが
始まってlua.exeやらluac.exeが出来上がる。
もしかして、 # On Windows systems. support for dynamic loading is enabled by default. # To disable this support, uncomment the next line. # #LOADLIB= -DUSE_DLL=0 は、#を消せば良いだけか? #LOADLIB= -DUSE_DLL=0 ↓ LOADLIB= -DUSE_DLL=0
cygwinでの話だけど、configのMYCFLAGSとMYLDFLAGSに-mno-cygwinを追加するだけで、 mingw用のバイナリ(cygwin1.dllに依存しないバイナリ)が出来てしまうんだが? mysysの方は環境が無いんで、わからん。
>>95 を見る限り英語を読もうともしない人にしか思えんのだが。
socket と cdbを利用したいんだが、 どう buildしたらいいのかな。
ダメだまったくわからん。
bccでファイル一式同じフォルダに入れて > bcc32 *.c -olua.exe とやったら生成ファイル名がlapi.exeになったんだけど、何故にlua.exeでないの? 普通に実行できるようだからいいけど、なんか気になる…
-o lua.exe ?
せめて、makeくらいは勉強してほしい。。。とか。 もしくは、本当にLuaを使う必要があるのか?とか。
ちなみにbccはmakeを使わない
>>100 のやり方が公式に乗ってるけどな(w
>>100 の-olua.exeはくっつけてるのが正しいと思うけど、なんで名前が変わるかは知らん。スマ
>>104 Luaって設定用だったのかー。
その割に、ちょっと変数を参照するのすら面倒なのは何故だ。
こんなことぐらいで、スタック弄らせるんじゃね−。
ラッパー作ったから別にいいけど。
俺は、もっと簡単に使えるのを作ろう(作ってる)
あと、Luaと関係ないけど、
> 「Scheme による Reactive Programming」
一度、Flashの開発環境でも触ってみると言いとおもた。
設定用というとTclも最初そんなこと言って作ってたよねぇ。 あっちの組み込み用インタフェースはどうなんだろ? >一度、Flashの開発環境でも触ってみると言いとおもた。 開発環境の話では無いような…
> 一度、Flashの開発環境でも触ってみると言いとおもた。 何故ですか?
とりあえず前スレの2の舞だけは避けたいなあ。
前スレの 2 はふしぎなおどりをおどった
ぅあ
このスレって、自作言語自慢厨が結構出没するんだよね。 それはそれで、結構興味深くて、面白いんだけども。
うん。そのたびに期待しちゃう漏れ。 それだけに決定打がないっているのかな。 でもLUAにかなーり満足してる。
luaと関係ない話題が多いな。そんな俺も、 単に小さい処理系が欲しいなら otcc と言ってみる。
otccelf って ELF バイナリを扱える環境なら Linux じゃなくても使えるのか。いいね。
つーかotcc自体、x86環境ならどこでも使えるけど。
俺は x86 使ってないんで、それは別に嬉しくないよ。
elfも含め、otccはx86コードしか吐けないんだが。
それってそのままCなりC++で書いたほうがいいという噂?
それ言ったら奇特なマイナー言語で書かれるよりは(以下略・・と思ってしまうが。
>>116 あ、そうなんだ。スマソ。
ホムペに SPARC/Solaris とか書いてあったから勘違いしてた。
関係ないけどcurlは異論なcpu上で動作するよ。 scheme知ってればどんなことしてるかぐらいはわかるしね。 基本的に()と{}の違いだけ。
もしotccを使うとしたらその理由は単純に処理系の小ささじゃないかな。 ゴミぐらいのオーバヘッドでCのサブセットが使用できると。
otcc.cをmingw gcc -O2でstripしてできたexeが大体16kbyte。 otccの問題はローカルスコープの参照の仕方に放置されたバグがある事。 あのままだと安心してグローバル変数は使えない。 まともに使うならシンボルテーブル周りをだいぶ書き換える必要がある。
ていうか、その小さい「コンパイラ」をゲーム内でどう使うのさ。 激しく勘違いしてる人がいるような気がする。
あ、変な仮定置いちゃった_| ̄|○ でも、仕様が途中で変化しそうな部分をスクリプトに追い出しておいて、 試行錯誤してみるってのは、割と有効な気がする。それが軽量組み込み言語の利点なわけで。
>>12 コンパイラとか区別する意味ないじゃん。
バイトコードで動くかネイティブで動くか程度の違いなんだから。
例えばゲームの実行時に敵アルゴリズムパターンを
動的作成してコンパイル&その環境で効率良く実行。
もっと賢くなりなよ。
他アプリに組み込むインターフェイスの事を言ってんじゃないの?
>>129 otccは外部参照書き換えれば簡単に組みこめるけど、
そういう事じゃないの?
どうやるの?とか聞かないでね。
それをやって、組み込みReadyにして公開すると、ありがたがる人は結構多いかも。
構造体も配列も無いのか。ポインタ操作だけでCコンパイラ作るって凄いな。 というか、最初オリジナルバージョン見て嫌がらせか?とか思ったよw(IOCCCに出したんだね。) まぁ、メモリ管理やらローダ作成やらと、本気で使うならちょっと手を入れないと駄目だね。
保守
保守だってば
なんで流行ってると思ったんだ?
>>136 文法変かな? 普通のメッセージパッシングの言語と同じっぽいけど。
ifとかforeachとかかなり変じゃない?いや、俺的には面白いんだけども。 昔、(もっと原始的だったけど)同じようなプロトタイプベース言語作ったなぁと ちょっと回顧しちゃった。
CaLua milkってどう?
>133 intとcharがあればどうにでもなるもんだね。 charはポインタ間接のみだから、intだけか。
IoってLuaより速い?
>>142 Io のページに他言語との比較があるじゃん。
145 :
デフォルトの名無しさん :03/12/08 00:34
>>144 で、どうなのよ?
あ、はい自分でみてきます・・・
イヤ待て、ちょっと待て。 俺が見てくる…
Luaのnestedloopが光ってるな・・・。あとhashが中々いい成績だ。 Ioはオブジェクト操作が早いというのがウリ? コードサイズはそれほど小さいわけでもないのね。 個人的にはGC性能の比較がほしい。比較基準が難しそうだけど。
たしかにLuaはLuaのオブジェクトをCから直接参照できないのがつらいねぃ。
で、
>>148 の12/6分のサンプルプログラム見てて思ったんだけど、
IoObjectをCプログラムから参照してる場合、途中でGCが起こったらどうなるんだろ?
いきなり消えちゃわないのかなぁ?
・・・っとFAQを見ると、Cスタック=言語スタックなのね。なるほど。
スレッド(=コルーチン?)はユーザレベルスレッド(=ファイバ?)を使ってるから
それで問題ないのか。
Io uses an incremental (tri-color, write barrier) garbage collector
which is similar to a mark and sweep collector but without the pauses.
使ってるGCの手法はこの方法なのかな?
ttp://members.at.infoseek.co.jp/zzyyb/gc/incremental-collector.html リアルタイム向けにはこっちの方がいいかも。
ためしに Io 組み込んでみたんだけど なんかメモリリークしない? IoState* st = IoState_new(); IoState_free(st); これだけで激しくリークするんですけど。
GC呼ばないと開放されないとか?
>>152 IoState_free のなかで IoState_collectGarbage を呼んでるので
たぶん違うと思う。
IoState_doCString_ を何度やってもリークの量は増えたりしないので
プログラム中で IoState を1つしか使わない場合は問題にならないかも
しれないけど複数使い分けたいのでちょっと困る。
追っかけようと思ったんだけどざっと2000ブロックぐらいリークしてる。
まあ2,3箇所直したら全部きえるのかもしれないけど...
Ioの初期化をしてないだけじゃないのかと。
IoState_new() が初期化じゃないの?
>>153 プリミティブやプロトタイプを一切解放してないからだと思われ。
main.c で IoState_free() するようにしたあと、インタプリタを起動、
>io Lobby debugCollector = 1
して、終了してみ。
なにしろまだ、バージョン番号すらついてませんから。。
>>156 >プリミティブやプロトタイプを一切解放してないからだと思われ。
IoState_free() の
PHash_do_(self->primitiveProtos, (PHashDoCallback *)freePrimitiveProtosCallback);
PHash_free(self->primitiveProtos);
このあたりで開放してると思われ。
>io Lobby debugCollector = 1
開放の前にGCが動くのでそこのデバック表示をオンにしても意味無いような。
とりあえずバージョン番号がつくのを待ってみます。
しかし Io の開発陣すごいな ここんとこ毎日のように更新されてる。 Lua もがんばって欲しい...
>>158 Luaはもう安定期にはいってるからでは?
新しいGCが搭載されるって話ありませんでしたっけ?
>>158 Ioはまだバグリ−なんで様子みながら使った方がいいよ。
Lua ってバージョン1.0が出たのはもう10年以上前なのか。 確かにもう安定期ですな。 Io も来年中ぐらいには製品に組み込めるぐらい安定して欲しいなー。
製品にはもういっぱい組み込まれてるみたいよ?
あ、ごめn。レスちゃんと呼んでなかった。
ページ数が違うみたいだからたぶん別物じゃない? でもこの PDF 155ページもあるしこれで十分のような。
それよりsmallみたいにJITでも作れよ
169 :
デフォルトの名無しさん :03/12/23 11:41
お前が作れ
171 :
デフォルトの名無しさん :03/12/26 15:36
Luaって釣りの話かと思ったらプログラミング言語なんだぁ。 さすが、2ちゃんで最高の知的レベルを誇るム板! こんなマイナーな言語がPart2ってすごいよね。 日本的には「HSP」や「ひまわり」なんかよりはるかに知名度低い のに…。(藁) Part1〜2熟読致しました。感心いたしました。 ブラジル発って言うか中南米原産の言語ってLuaぐらいじゃないでしょうか? 向こうも日本発って言うかアジア原産の言語ってRubyぐらい…て?(藁藁) 基本的には関数型言語に分類されるのでしょうか? それならご本家関数型言語のスレに仁義は切っておられるのでしょうか? ショバ代をよこせなんてケチな事を言ってきたら連絡下さい。 ガッツ〜ンと一発、やられたり…してね。(WWW) Luaはゲームが得意のようですが、皆さんは何に利用されておられるの でしょうか?
ヤバイ。妹ヤバイ。まじでヤバイよ、マジヤバイ。 妹ヤバイ。 まず可愛い。もう可愛いなんてもんじゃない。超可愛い。 可愛いとかっても 「芸能人で言うと誰似?」 とか、もう、そういうレベルじゃない。 何しろ中1。スゲェ!なんかブラとかして無いの。何カップ?とか彼氏いるの?とかを超越してる。優しいし超可愛い。 しかも成長してるらしい。ヤバイよ、成長だよ。 だって彼女とか成長しないじゃん。だって自分の身長追い越してどんどん伸びてったら困るじゃん。キスするのに超背伸びとか困るっしょ。 身長が伸びて、一年目のときは俺よりうんと下だったのに、三年目のときは頭二つ分彼女が高いとか泣くっしょ。 だから彼女とか成長しない。話のわかるヤツだ。 けど妹はヤバイ。そんなの気にしない。成長しまくり。お風呂一緒に入ろう?とか妄想してる俺。ヤバすぎ。 妹っていたけど、もしかしたら妹じゃないかもしんない。でも妹じゃないって事にすると 「じゃあ、昼まっから妄想してる俺ってナニよ?」 って事になるし、それは誰もわからない。ヤバイ。誰にも分からないなんて凄すぎる。 あと超血が濃い。約二親等。続柄で言うと妹。ヤバイ俺、萌えすぎ。妹が成人する暇もなく萌え死ぬ。怖い。 それに超つるぺた。超寂しがりや。それにちょっとえっち。キスしたことある?とか平気で訊いてくる。キスて。彼女すらいたことねえよ、今まで。 なんつっても妹は料理が上手い。肉じゃがとか平気だし。 うちらなんて料理とかたかだか日曜日の昼飯を作るぐらいで上手く作れないからレトルトにしたり、コンビニに行ってみたり、昼飯抜かしたりするのに、 妹は全然平気。卵を片手で割ってる。凄い。ヤバイ。 とにかく貴様ら、妹の可愛さをもっと知るべきだと思います。 そんな妹の事ばっかり妄想してる俺とか超一人っ子。もっと親父がんばれ。超母ちゃんがんばれ。
なんつーオチだ。
174 :
デフォルトの名無しさん :03/12/27 17:21
175 :
デフォルトの名無しさん :03/12/27 17:23
>172 「ひろゆき」さん?
luabind使ってる人いねーか?
177 :
デフォルトの名無しさん :03/12/30 20:18
179 :
デフォルトの名無しさん :04/01/02 20:50
萎え
> 皆さんの絶大なるご期待に応えて「検索」しやすいよう、今後 > 2ちゃんにおける余輩の全ての発言に「ヒーロー勇気」の > 名前を冠することに致します。 以前こんな事言ってた奴が居たよな。思いっきり名無しさんに戻ってるが。
>>181 おお〜これ良いね〜!
これで、構造体がつかえれば・・・
LUAはデータ構造が柔軟につくれるとこが、やっぱ
いいんだな・・・あらためて思いました。
長かったね。 GCの実装はやっぱり大変だったということなんだろうか?
オリジナルメモリアロケータをもてるのが、よさそう・・・。
現状でもAPIとしては整備されていないけど一応分離されてるっぽいけどね。 前スレでなんかやってた人が居た。
InlineCですか?
そういえばCintってどうよ?
191 :
デフォルトの名無しさん :04/01/15 13:55
luaで、%ってないの? a = 3 % 2
>>191 math.modを使えってことじゃない?
>>192 strongly typedという特徴を見逃してはいけないな!
CaLuaをcygwinで使いたいんですが、どうしたらいいのか分かりません。
マイナー言語を使う資格=自分で問題を解決できる事。
CaLuaってVC用なのか。
ソースまとめてコンパイルするだけじゃだめなの?
>>196
そのままじゃだめだね>CaLua __asmとか使ってる所をGCC用に書き換えないと。
5.0.1のパッチは去年の10月くらいに出てるね。 コルーチンとかスタックとかのバグフィックスが行われたらしい。 んで、5.1はまだ半年先らしい。
>>203 ありがとうございます。
同じものと確認しました。
ほすゅ
win版5.0.1バイナリは落ちてねーのかyo?
207 :
デフォルトの名無しさん :04/01/30 19:40
wxLuaのおまけにもIDEついてきて種。 というか、自分のアプリに組み込んだLuaのデバッグとかできないかなぁ?
自分のプログラムをDLLに汁
>>207 これの使い方がわからんのですが
IDE上で実行とかブレークポイント貼るのとかどうやんの?
メニュー覗いても該当する項目ないし
F5押しても何も起きないし
もしかして、見た目だけとか・・・?
211 :
デフォルトの名無しさん :04/01/31 18:47
>210 >もしかして、見た目だけとか・・・? やっぱりねぇ。なんとなくヤバそうな雰囲気だったから 誰か試してくれないかなぁ…って(大笑い) ゴメン。
>>211 ミミ:::;,! u `゙"~´ ヾ彡::l/VvVw、 ,yvヾNヽ ゞヾ ,. ,. ,. 、、ヾゝヽr=ヾ
ミ::::;/  ゙̄`ー-.、 u ;,,; j ヾk'! ' l / 'レ ^ヽヘ\ ,r゙ゞ゙-"、ノ / l! !ヽ 、、 |
ミ/ J ゙`ー、 " ;, ;;; ,;; ゙ u ヾi ,,./ , ,、ヾヾ | '-- 、..,,ヽ j ! | Nヾ|
'" _,,.. -─ゝ.、 ;, " ;; _,,..._ゞイ__//〃 i.! ilヾゞヽ | 、 .r. ヾ-、;;ノ,.:-一'"i
j / ,.- 、 ヾヽ、 ;; ;; _,-< //_,,\' "' !| :l ゙i !_,,ヽ.l `ー─-- エィ' (. 7 /
: ' ・丿  ̄≠Ξイ´,-、 ヽ /イ´ r. `ー-'メ ,.-´、 i u ヾ``ー' イ
\_ _,,......:: ´゙i、 `¨ / i ヽ.__,,... ' u ゙l´.i・j.冫,イ゙l / ``-、..- ノ :u l
u  ̄ ̄ 彡" 、ヾ ̄``ミ::.l u j i、`ー' .i / /、._ `'y /
u `ヽ ゙:l ,.::- 、,, ,. ノ ゙ u ! /_  ̄ ー/ u /
_,,..,,_ ,.ィ、 / | /__ ``- 、_ l l ``ーt、_ / /
゙ u ,./´ " ``- 、_J r'´ u 丿 .l,... `ー一''/ ノ ト 、,,_____ ゙/ /
./__ ー7 /、 l '゙ ヽ/ ,. '" \`ー--- ",.::く、
/;;;''"  ̄ ̄ ───/ ゙ ,::' \ヾニ==='"/ `- 、 ゙ー┬ '´ / \..,,__
、 .i:⌒`─-、_,.... l / `ー┬一' ヽ :l / , ' `ソヽ
ヾヽ l ` `ヽ、 l ./ ヽ l ) ,; / ,' '^i
>>211 ためしたよ。プロジェクトを新規作成しないと、
うんともすんともいわんみたい。
プロジェクト上でプログラムをかくべし。
う〜ん、自分のDLLをwxLuaと、LuaIDEでよませてみたけど、
LuaIDEはなんかいまいち、うまくいかんかった。
終了時にIDEごとおちちゃう。原因は特定してないけど、
DLL作成時のコンパイルオプションがIDEのコンパイルオプションが
ちがうんだろう。
DLLは5.0.1作成したんだけど、IDEは5.0.0かもしれない。
wxLuaは、実行したプロセスが落ちないようになってしまったけど、
これはなんとかなりそう。
上位値とクロージャが分かりません。 あとLuaからCの変数にアクセスする方法も分かりません。
215 :
デフォルトの名無しさん :04/02/03 14:56
>213 お手数おかけしました。 IDEのWEBでは一応5.0.1対応とは言っておりますが その辺りは、結構いい加減なんでしょうね。 (管理人のオッチャンからアクセス規制をくらって おりまして、ご返事が遅れました。 悪しからず。)
>214 上位値とクロージャを。自分の変数を持つ関数かな? schemeとかocamlとかperlとかにはあった気がする。lispが発祥だとかperlの本にあったなぁ。 -- newgreeting = function(a) --a:上位値 return function (b); print(a..", "..b..".") end --クロージャ end gr1 = newgreeting("Good morning");gr1("Emily");gr1("Mike") gr2 = newgreeting("See you");gr2("Emily");gr2("Mike") -- もうひとつ 上位値の変更 newcounter = function () local cnt=0 --上位値 return function () cnt = cnt+1 return cnt end end cnt_a = newcounter() cnt_b = newcounter() print(cnt_a()) print(cnt_a(), cnt_b()) print(cnt_a()) print(cnt_a(), cnt_b()) print(cnt_a()) print(cnt_a(), cnt_b()) 結果は省略
そろそろFarCryがでるころかと思ってた コンパイル済みのじゃなくて、生の.luaファイルが入ってるのには 弄ってくれといわんばかりだ。
クロ−ジャみて驚いたけど、使い道がわからん_| ̄|○ ジェネレータに使えるといわれても、LuaだとOOっぽく記述できるし・・・
genericsのために使えるよ。 a = {1, 2, 3, 4, 5, 6} b = {} table.foreach(a, function (v) table.insert(b, v*2) end) print(table.concat(b, "\n"))
あー、それ(無名関数からグローバルな変数へのアクセス)が出来るのは当たり前かと思ってた なるほど、確かに上位値とクロージャの効用だ dクス
関数型言語ごっこ。 カリー化関数curry()を作る。とかw % lua Lua 5.0 Copyright (C) 1994-2003 Tecgraf, PUC-Rio > function curry (f, v) return function (...) return f(v, unpack(arg)) end end > function add (a, b) return a + b end > print(add(1,2)) 3 > inc = curry(add, 1) > print(inc(3)) 4 > function add3(a, b, c) return a + b + c end > foo = curry(add3, 1) > print(foo(2, 3)) 6 > bar = curry(foo, 2) > print(bar(3)) 6
変数に数値を16進数で代入するにはどうしたらいいですか? C風に foo=0x2B こんなかんじで書きたいんですけど。
マニュアル嫁 サンプル嫁
マニュアルのどこ? サンプルはどこ? foo = tonumber('2B', 16) これ?
luaのソース嫁
ファイル名は?
ほすゅ
232 :
デフォルトの名無しさん :04/02/14 11:52
Luaのスレッドって、なんかAPI呼ばなくても、裏で勝手に走るのかな? OSレベルのスレッドなのかな?って話なんだけど
>>232 CoRoutineのこと?
それとも、スレッドが利用できる拡張でもあるんだっけ?
>>232 lua_newthreadの話だよね?
lua_resumeはコルーチンが中断されたり実行終了したら、
呼び出しから戻るってかいてあるからOSレベルのスレッドは
自前で実装してその中で呼ぶようにしてってことじゃない?
>>234 そそ
コルーチンは、終わるかyield呼ぶまでだと書いてあるんだけど、
newthreadの方は、特に書いてないんだよね
236 :
デフォルトの名無しさん :04/02/14 18:32
Luaもりあがってるかい?
>>234 Luaのコルーチン=lua_newthread+lua_resume(+lua_yield)だよ。
lua_newthreadは新しいコルーチンを生成する関数。
lua_newthread()とlua_resume()を使ったサンプルは前スレにある。
threadって付いてるけどOSのスレッドとは一切全く関係ない。
Programming in Lua をかって読んだ人はいますか?
>>237 結局、スクリプトを実行(dofileとか)したら、
終わるまで帰ってこないって解釈で良いのかな?
裏で何かしたかったら、(処理系もしくはOSの)スレッド使えと
>>240 lua_resume使えば、Luaスクリプト側でyieldすれば戻ってくるよ。
もう一回lua_resumeするとyieldしたところから実行が始まる。
協調型マルチスレッド(=コルーチン)と言ったところか。
別にOSのスレッド使うのも有りかもしれんけど、Luaってスレッドセーフだっけ?
lua_resumeしたあとでエラーの検出どうやるの? とりあえずlua_resumeが1を返しても正常終了かエラーで中断かわからん
lua_resumeが0以外で帰ってきて、スタックが1つだけ詰まれててそれが文字列で、 ・その文字列が"cannot resume"を含まなければ、スクリプト実行エラー ・そうでなければ、既に実行が終わったものをlua_resumeしようとした時のエラー とかしてる。もっとうまい方法あるかな? lua_resumeが正常終了した後、もう一度lua_resumeを呼べるかどうかを調べる方法は、 ソースを見る限りなさゲ?(もう調べたころの記憶が曖昧だけど…)
ユーザーデータ作成のサンプルプログラムでよく lua_pushliteral(L, "__metatable"); lua_pushvalue(L, methods); lua_settable(L, metatable); ってあるんですけどメタテーブルのメタメソッド"__metatable"って 何のために設定するんでしょうか? リファレンスのメタテーブルのとこ見ても このメタメソッドについては何も書いてないし…
userdata = (ライトユーザーデータを返す関数) userdata:print() みたいにC側からライトユーザーデータを渡して それに対して関数を呼んだりしたいのですが ライトユーザーデータだとメタテーブルを 持てないのでできません。 なにか良い方法はないでしょうか?
a="test" env={ b = "test", c = { "test" } } C側から値を取得しようとしてます。上の中で、 aはlua_getglobalのあとにlua_tostring、 cはリファレンスのテーブルを巡回する例と同じようにできたのですが、 bができません。 どなたかご教授ください。
247 :
デフォルトの名無しさん :04/02/26 17:15
なぜ800?
質問に答えられないような奴らにまかせておけないからな。 今から宣言しておく。 8 0 0 は オレ が 獲 る !
>>246 この例でcが取れてbが取れないって
ネタとしか思えん。
ここはlua5.1がでるまでネタスレになりました。
>>246 cのテーブルを巡回するほうが難しいだろ!
>>246 ソースみせて。
たぶん一発で回答がでるよ。
こうです。どのへんが悪いのでしょう? なお248は別人です lua_pushstring(L, "env"); lua_gettable(L, LUA_GLOBALSINDEX); lua_pushstring(L, "b"); lua_gettable(L, -2); if(lua_gettop(L) && lua_isstring(L, -1)) { strcpy(buf, lua_tostring(L, -1)); } lua_pop(L, 1); lua_pop(L, 1);
う。なんでだろ。 うまくいきそうなもんだけど・・・。
だからネタだって
こんなマイナー言語でわざわざネタやる意味ってなんだろ? そんな混乱させたいのか
ごめんなさい。テストルーチンがバグってました。 printf( "[%]←なんで結果が返らないんだよ!糞が!!", buf);
ま、よかったよかった
いろんなとこで、LUAみるようになったな。 LUAをまるまる組み込んでるのに、 ”LUA”っていう文字がでてこなかったら、 なに隠しんてんだよって激しく思う。
なーなーMacroMediaのアクションスクリプトと よくにてない?
JavaScriptとは似てるのかな? 手元にあったDMonkey触ってみた a = new Object; a["foo"] = "bar"; println(a.foo); // bar function Hoge() { this.a = "foo"; this.b = function(s) { println(s + this.a); } } var f = new Hoge; f.b("bar"); // barfoo a = { test: -12, hage: "foo", hoge: function (a) { println(a + " at hoge"); } }; a.hoge("moge"); // moge at hoge うほっ
>>261 ほーこの辺の言語はもうどれも似たりよったりなのかねぇ〜
JavaScriptもクロージャもってるしね。 function greaterThan(/* number */ u) { return function(n) { return n > u; }; } // 使う var arrOriginal = [45, -29, 213, 99, 118]; filterArray(arrOriginal, greaterThan(50)); // 213,99,118
264 :
デフォルトの名無しさん :04/03/10 12:12
LUAはCとの親和性が目的の1つなのに、 Cライクになりきってないとこがなぁ・・。 コメントが--って他の言語にあるの?
結構あるのね
ほすゅ
274 :
デフォルトの名無しさん :04/03/16 23:43
その日本語化パッチ、今のバージョンじゃだめっぽくない? 前スレで出てた方法なら平気そうだけど(変更箇所が2箇所に増えてるけど
5.0.2でってことか、そいやまだ試してないや.
276 :
デフォルトの名無しさん :04/03/23 12:57
質問です。
ttp://nebula.student.utwente.nl/archive.php のソース「Sphere」の中に、
#ifdef _DEBUG
#pragma comment(lib, "lua5_dbg.lib")
#else
#pragma comment(lib, "lua5_rel.lib")
というのがあるんですが、このライブラリって
どうやって入手するんでしょう?
ソースには入っていないし、公式サイトにもないような
のですが…
自分でコンパイルしたんじゃないの? リリース版とデバッグ版で作成されるライブラリのファイル名変えてるんでしょ。
自己解決しますた。 LuaBinaries5.0.2の中の、lualibd.lib と同一のものだったようです。 ようやく実行できた…
280 名前:デフォルトの名無しさん[sage] 投稿日:04/03/25(木) 17:53 どういう実装かまだ読んでないけど、まあincrementalにしたんだから、 GCで長時間止まることはなくなったんだろう。
ちなみに全体の実行速度は(GC変更のせいで?)遅くなってるみたいだ。
>>282 工エエェェ(´д`)ェェエエ工
全体的におそいの?
トータルでいくと同じなのかなぁ・・・。
VCのクラスメンバ内でLua関数を呼び出そうとしてます。 lua_register(L,(struct lua_State *)"SetMap",SetMap); のところでビルドエラーになります。 'lua_pushcclosure' : 2 番目の引数を 'int (struct lua_State *)' から 'int (__cdecl *)(struct lua_State *)' に変換できません。 て出ます。 __cdecl *ていうのが良くわからないんですが、調べてみたらC++の呼び出し規約云々ということで CであるLuaをC++から呼ぼうとしてるのが問題のような気がします。 回避するのはどうしたらいいのでしょうか。 どなたかご教授くださるとうれしいです。よろしくおねがいします
lua_register(L,(struct lua_State *)"SetMap",SetMap); ↓ lua_register(L,(struct lua_State *)SetMap,"SetMap");
>>284 extern "C" {
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
};
lua_register(L,"SetMap",SetMap); でいいのでは? (struct lua_State *)"SetMap" がエラーの原因っぽいが・・・
284です。
色々ご指導ありがとうございます。
>>287 さんのいうとおり、その部分はエラーでした。
2番目の引数が〜なんてメッセージがでてるのでそこがおかしいのとずっと思ってまして、
色々試してる途中のコピペをしてしまいました。
Lua.hを追ってみたらどうやら3番目の関数で引っかかっている様子です。
これがメンバ関数では駄目みたいです。
とりあえずSetMapをクラスからはずしてみようとおもいます。
ありがとうございました。
>>288 ん?まてまて、クラス?
C++のclassか?
static 関数にしてるだろうな?
290 :
デフォルトの名無しさん :04/05/01 21:00
Luaいいね。
291 :
デフォルトの名無しさん :04/05/04 14:24
組み込みには、最高ですな。
組み込む機会があればな。
293 :
デフォルトの名無しさん :04/05/10 03:58
LUA用に組み込んだCの関数に Doxygen用のドキュメント書いてるんだけど、 _| ̄|○ どうすればいいかわからん とりあえずこんな感じ /*! @brief 平行移動量を取得する。 @code mtx= Matrix:new(); mtx:translate( { 10, 10, 10} ); pos= mtx:getpos(); @endcode @param なし @return 平行移動量 { x, y, z} */ static int getpos_( lua_State *L) { }
294 :
デフォルトの名無しさん :04/05/11 09:25
保守
>>293 すまん、おれもいいアイデアおもいつかん
いろいろやってみたけど、 _| ̄|○でした・・
>>296 俺も最近それみつけた
ちょうど自分でコンバート中だったから、使わせてもらおう
こうしたらダメなの? int getpos_( lua_State *L ){ int ret = getpos_impl(); lua_pushnumber( L, ret ); } /*! なんかコメント */ int getpos_impl(){ } mpl使えれば上の(implじゃないほう)コードは自動生成できそうなんだけど。 mpl正直意味わからん_| ̄|○
そういえばmekakitとluaの組み合わせってどうよ?
>>299 いやいやいや!!!
ナイスナイス!!!ありがとう!!まじで!!!
感動した!
304 :
デフォルトの名無しさん :04/06/03 13:30
Luaって、何がいいんだ?
サイズの小ささが利点
小さいか?
小さい、速い、ってのは散々言われている利点だが。 データ記述性ってのが一つの利点だと思うよ。 XML並の拡張性を担保していてなおかつプログラミング言語だから。 たとえばUIの拡張言語として採用してみたら、面白そうだと思わない? あとテーブルの無茶さ加減が大好きだ。あふぉ杉。
308 :
デフォルトの名無しさん :04/06/06 15:26
>>307 ほほ〜、いいかも知れんな。
日本語訳もあるし、時間が出来たらやってみるかな。
なんか、パスカルに似てる気がするけど、気のせいかな?
激しく気のせいじゃないよ。 Cで書かれてるならC真似れというのも散々言われてる欠点だ(苦笑
覚えるのに、ちょっと苦労しそうだな。 Cを真似てくれたら楽なのにな〜 (これ覚えると、パスカル読める?)
どうだろ?今現役(?)なPascalはDephiのObjectPascalかな?あんまり 参考にならんと思うよ。 まぁ本物のプログラマ名乗りたきゃ、最低5言語(パラダイムの違うものを) 学ぶべし、とどこかのエロイ人が言ってた。精進すべし。漏れはあと関数型 言語だけだ(苦笑
C/C++/Java/PHP/N88Basic しかできない私はだめでつか?
PHPとN88Basicは0.5と数えるので、1足りません。 ざんねん あなたのぼうけんは こk(ry
>>312 きみにはLisp分が足りない。Schemeを処方しよう。毎食後服用すること。
そのうちSchemeが主食になる。
Lisp原理主義者がいるのはこのヌレですか?
Lispはかっこのお化け〜
317 :
デフォルトの名無しさん :04/06/07 21:16
保守 自分でコンパイルせにゃならんのか…
プログラミングを独習するには10年かかる
http://www1.neweb.ne.jp/wa/yamdas/column/technique/21-daysj.html > ・少なくとも半ダースのプログラミング言語を学ぶこと。そのうちの一つはクラス抽象を
> サポートするもの(例えば Java や C++)、一つは関数抽象をサポートするもの(例えば
> Lisp や ML)、一つは構文抽象をサポートするもの(例えば Lisp)、一つは宣言的記述を
> サポートするもの(例えば Prolog や C++ テンプレート)、一つは coroutine をサポート
> するもの(Icon や Scheme)、そして一つは並列処理をサポートするもの(例えば Sisal)
> であること。
これDEATHね。
N88-Basic、Asm(mc68000)、X-Basic(外部関数拡長)、C、Delphi、C++、YaneGameScript
320 :
デフォルトの名無しさん :04/06/08 23:30
>>319 >YaneGameScript
ワラタ。YGSくわ。
並列処理なんて個人レベルで必要かなあ。 とりあえずC++とSchemeやっとけばいいと思うよ。
322 :
デフォルトの名無しさん :04/06/09 07:37
C++/Boostで、たいがいの事はできるんじゃね? 無名関数も使えるぞ。
>>318 Scheme1言語だけで、関数抽象と構文抽象と coroutine の3つはOKでつね。
ほほう。よし、ちょっと今からSchemeスレ行ってくる。 -= ∧_∧ -=≡ ( ´∀`) -=( つ┯つ -=≡/ / // -=≡(__)/ ) -= (◎) ̄))
((lambda(a)(a a))(lambda(a)(a a))) が永久に動く世界だからなあ。 C++と合わせて2、3年ぐらいでいいんじゃね。
この言語おもしろいな。
16進データを書くときどうすると、いいのかな・・・ Luaプログラムファイル内にいれたいんですが・・・。
328 :
デフォルトの名無しさん :04/06/12 19:10
16進でなければ、
a= "\010";
とやって、バイナリデータをString内にいれることができました
>>328 拡張してみますた。
llex.cのread_stringに、"\x0aa"と書けるようにするのをいれてみました。
>>330 ふむ。Luaのパーサって、シンプルで拡張しやすいでそ?
>>331 サンクス!
とても素直にできてて、ますますLuaが好きになりました
そんくらいはじめから入っとけ、って奴が入ってないことで 処理系サイズに貢献しているとか。
334 :
デフォルトの名無しさん :04/06/14 07:26
>>334 とりあえず、コンパイル後の実行サイズと脳内補完してみた。
336 :
デフォルトの名無しさん :04/07/08 17:28
337 :
デフォルトの名無しさん :04/07/09 00:19
lua+luabindと、python+Boost.Python。どっちが組み込み楽なんだろ……。
339 :
名無しさん@そうだ選挙に行こう :04/07/11 12:06
汎用性を考えたらBoost.Pythonかな。テストされてるコンパイラが圧倒的に多い。 でもBoostからBoost.Pythonだけインストールするとか普通しないから、 どっちが楽とかは言えないか…… 速度性能は、独自形式にコンパイルができるだけLuaの方が上……なのか? ……あんまり変わらないかも。
Lua大好き。 あのデータ記述のお手軽さはなんだ。
thx. とりあえず、組み込みにはluabindのほうが楽そうですね。
保守
保守
ほしゅほしゅしゅぽしゅぽー
ほしぅ
>>243 >lua_resumeが正常終了した後、もう一度lua_resumeを呼べるかどうかを調べる方法
lbaselib.cのluaB_costatus()参照
lua_Debug ar;
if (lua_getstack(co, 0, &ar) == 0 && lua_gettop(co) == 0)
/* terminated */;
else
/* alive */;
個人的にはもっと簡便にlua_resume(L, ...)呼ぶ前に
lua_gettop(L) == 0 ならコルーチン終了してる
ってコーディングしてるけど今までのところ問題ない
おお、ありがたいねえ スタックトップをしらべるのか?
いつも引数付きでyield()してるから勘違いしてた。 普通はlua_gettop(L) == 0だけじゃだめだ。 int main(int argc, char *argv[]) { lua_State *L; L = lua_open(); luaopen_base(L); lua_settop(L, 0); luaL_loadfile(L, "test.lua"); for (;;) { lua_Debug ar; int i, n; if (lua_resume(L, 0) != 0) { fprintf(stderr, "%s\n", lua_tostring(L, -1)); break; } if (lua_getstack(L, 0, &ar) == 0 && lua_gettop(L) == 0) break; fputs("yield(", stdout); n = lua_gettop(L); for (i = 0; i < n; i ++) { if (i > 0) fputs(", ", stdout); fputs(lua_tostring(L, 1 + i), stdout); } fputs(")\n", stdout); } lua_close(L); return 0; }
-- test.lua --
coroutine.yield("abc")
coroutine.yield()
coroutine.yield("def", "ghi")
ちなみにlua_open()したStateも
lua_newthread()で派生したコルーチンも
等質なStateなんで,
>>350 みたくlua_newthread()する必要ないんだけど既出?
いや・・新出
353 :
デフォルトの名無しさん :04/09/04 21:47
354 :
デフォルトの名無しさん :04/09/04 21:57
なんかAIXでコンパイルしたらio.lines()でおかしな動作になった。 複数の大きいファイルをio.linesで読もうとすると1つ目のは全部読んでくれるのに 2つ目の以降のは数十行程度で読むのをやめてしまう。 同じコードがMingWだと動作するのでAIX上だけかなあ。
Smallの使い方とか紹介してるサイトってある?
ほんとネーミングは考えて欲しいよね SmallとかIoとか検索しにくい。
5.1 WORK2 でたよーage
なんか5.1ってlua_dofileなんだけど。どうやって走らすの?
ないんだけどでそた
luaL_loadfileでいいじゃん
保守
ほしゅ
363 :
デフォルトの名無しさん :04/11/04 20:45:43
>>363 説明してくれると助かるのですが・・・
すいません・・
hoshu
ho
スクリプトの拡張子はふつー ".lua" ですかね? バイトコンパイルしたら ".luac" ?
.lub .lo .lua まだ気分でかえてるよ・・orz
hoshu
370 :
デフォルトの名無しさん :04/12/08 18:02:45
06 Dec 2004 Lua 5.1 (work3) released.
LuaでC++やらのクラスっぽいことやっている人いるー?
ノシ
>>372 おお〜!
luabindでやろうとしてたんですが、
もし他にいい方法があれば、情報をおしえていただきたいのですが
m(_ _)m
luabind Beta7 RC4 を使っています。 そろそろ boost-1.32.0 対応版が出るんじゃないでしょうか。
CaLuaの構造体をLuaに渡したりって、Luabindで出来る? ベータになってるから、使うのはちょっと不安・・・。
30 Dec 2004 Lua 5.1 (work4) released.
ほしゅ
378 :
デフォルトの名無しさん :05/01/21 22:25:11
質問だけが飛び交うスレだな。
379 :
デフォルトの名無しさん :05/01/21 22:30:44
_,..............._,....... ,ノ⌒::::::::::::::::::::::::::::::::::::⌒ヽ_ _ノ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::ヾ、 (::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::) _ノ:::::::::::::::;ヘ::::::::::ノ⌒ヽ:::::::::::::::::::::::::::::::::) (::::::::::::::::::/  ̄ , ‐-、 |::::::::::::::::::::::::::::::::) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ (:::::::::::::/ヽj _/ -‐-、 |::::::::::::::::::::::::::::::::) | ハッハッハ、君たち、 ):::::::::ヾllli_、_,;iiiillllllllli <::::::;へ:::::::::::::::::( | (::::::::::::/`i´ ,└=゚'┘ |::::| 6 |:::::::::::::::::::} < 相手が世界チャンピオンだからといって遠慮することは無い。 `〜、 ゝ| _コ、_、 /|::::| ソ/::::::::::;〜" | ヾ|||ll|||||||||||l〉| 三ー'〜〜" | 胸を借りるつもりでドンと来い。 |||:二三|||| l ,三 ヽ、 \______________ |l ⌒ ||| :// ヽ=、-、_ |l、:( : : ||/ / ヽ, |  ̄\ /  ̄ / ノ / \
ウホッ
穴を借りるつもり
382 :
だなだな :05/01/31 23:35:15
ニヤニヤ
383 :
デフォルトの名無しさん :05/02/09 13:52:42
>>384 うおぅ
以前、検索して見つけてパッチもらってきました。
その説はお世話になりました。
386 :
デフォルトの名無しさん :05/03/10 10:07:59
つーか数ヶ月前も5.1リリースしてた気がするけど、 まだ5.1いぢってるのね。 何か5.1に思い入れでも?
あれだ、GCの変更が結構たいへんなんだと思う がんがってるのが嬉しい
GCの変更ごときでそんな時間かかるもんかねえ。 おれなら1週間もあれば作っちゃうよ。
390 :
デフォルトの名無しさん :2005/03/26(土) 00:40:00
>>389 もうかれこれ2週間経っているわけだが。
392 :
デフォルトの名無しさん :2005/04/04(月) 08:28:14
俺はCaluaを使ってるんだがC++で登録した関数でcoroutine制御できた 奴いる??
393 :
デフォルトの名無しさん :2005/04/15(金) 15:48:50
luaでノベルタイプのゲームを作るとき行数ジャンプができないと ちょっとキツイ気がする。 luaStateを保存してlua_resumeとかできればできそうではあるけど luaStatecopyとか関数を作っておいてほしかった。 俺のチラシの裏の日記でした。
394 :
デフォルトの名無しさん :2005/04/15(金) 17:53:54
LuaはunrealとかFarCryで使われてた言語のイメージしかない
イメージがあるだけマシ どうでもいいが寂れたな
397 :
デフォルトの名無しさん :2005/04/21(木) 21:38:47
コンパクトにまとまってて便利
逆にLua以外でゲームに組み込まれたものって何があるのか知りたい
自分で調べれば?
400 :
デフォルトの名無しさん :2005/04/22(金) 20:01:58
>>399 RPGツクールXPのRubyしかないね
ゲーム用組み込み言語じゃLuaが圧倒的なシェアだ
普通のCじゃn
>>401 あれあれ、悪名高いHSPをお忘れですか?
>>403 あれをどうやって組み込むんだ?ちょっと気になるぞ
前スレって、もう読めないの?
407 :
405 :2005/04/23(土) 15:21:36
408 :
デフォルトの名無しさん :2005/04/24(日) 18:15:21
Luaのインストール方法を解説してるサイトないですか?
プロジェクトにソースファイルをぶっこむだけです。
410 :
デフォルトの名無しさん :2005/04/26(火) 12:49:50
function add(x, y) return x+y end lua_State* L = lua_open(); luaopen_base(L); lua_dofile(L, "add.lua"); lua_pushstring(L, "add"); lua_gettable(L, LUA_GLOBALSINDEX); lua_pushnumber(L, 2); lua_pushnumber(L, 5); lua_call(L, 2, 1); printf("%d\n", (int)lua_tonumber(L, 1)); lua_close(L); luaopen_base(L); を呼ぶとadd関数の戻り値が0になるんだがなぜ? (lua 5.0.2, vc++ 7.1)
411 :
デフォルトの名無しさん :2005/05/01(日) 13:45:34
Luaスクリプトが終了したことを知る方法ってありますか?
412 :
デフォルトの名無しさん :2005/05/01(日) 14:53:59
>>410 lua_open_base()の呼び出しでスタックの状態が変わってる。
- lua_tonumber(L, 1)
+ lua_tonumber(L, lua_gettop(L))
>>411 なんやらよくわからんがコルーチンの状態ならlbaselib.cの
luaB_costatus()にそれっぽいコードが。
414 :
デフォルトの名無しさん :2005/05/01(日) 17:35:42
>>413 ありがとうございます。
コルーチンじゃなくて、メインルーチンの状態を取得する方法なんです。
Luaスクリプトを読み終わったら、次のスクリプトを読ませたいと思っています。
Luaスクリプト中で次のスクリプトを読ませると、呼び出し元が残ってしまいますよね?
415 :
414 :2005/05/01(日) 19:15:47
スクリプトの一番最後でCの関数を呼び出すことにして、その関数で終わったというフラグをセットする ことにしました。 お騒がせしました。
416 :
デフォルトの名無しさん :2005/05/04(水) 16:29:15
Luaをとりあえず動かしてみる最小プログラムってもしかしてすげぇでかくなる?
うん、すげぇでかい。 やめといたほうがいいな。
418 :
デフォルトの名無しさん :2005/05/04(水) 17:37:10
>>417 やっぱり?
不便だよねこれ。
ソースコードすげー多いし(長いよりましか?)、
いちいちライブラリファイル作るの面倒だし。(これ、意外とネックだよ)
で、やっぱりLuaで糞真面目に組んじゃうのはよくないわなw
結局さ、Luaのデバッカが必要になるぐらいの規模でLuaを使っちゃった時点で
Luaの存在意義はなくなるんだよな?
スレのはじめで「何に使うかが問題だ」っていってたのってそういうことか、って今わかった。
組み込みスクリプトさようなら。
いくつか試しましたが、ゲーム製作にはいらないです。んじゃ。
>>418 お前試しても無いだろ。「何がやっぱり?」だ、バカ丸出し。
Luaは小さい。
>ソースコードすげー多いし(長いよりましか?)、
>いちいちライブラリファイル作るの面倒だし。(これ、意外とネックだよ)
はぁ?お前こんなのめんどくさがって、そんなんでゲーム作れんのか?
>結局さ、Luaのデバッカが必要になるぐらいの規模でLuaを使っちゃった時点で
>Luaの存在意義はなくなるんだよな?
お前一行も組んでない癖に、何しったかぶってんの?頭悪。
>組み込みスクリプトさようなら。
>いくつか試しましたが、ゲーム製作にはいらないです。んじゃ。
HSPに逆戻りか。お前にはお似合いかもな。んじゃ。
>>419 大好きなLua馬鹿にされて頭にきちゃった?w
・・・という自作自演を考えてみた。
>>420 Lua数度しか使ったことねーが、お前のあまりのバカさ加減に頭来たねw
バカにされて頭来ちゃった?w
>>422 なんだ、やっぱり使わないんじゃん。
俺と同じ結論だしてるくせに何が不満なのよ。
424 :
デフォルトの名無しさん :2005/05/04(水) 20:09:48
>>412 おぉ、ありがとう!!
早速、試してみるよ。
どのスレでもやり口同じだな…
>>423 結論が同じ?w
バカの思考回路は意味不明だなw
>>426 いやいや、417はつかわなくていいんじゃ?
へたにつかって、ここで質問されても困るしw
まあここはLua程度のスクリプトも自作できないような無能が集まってる場所だし バカが集まってくるのは仕方が無い。
430 :
デフォルトの名無しさん :2005/05/04(水) 21:45:24
HSP>>>>>>>>>>>>>>>Lua Luaヲタ乙wwwwwっうぇwwww
そこでHSPですよ
Rubyをお忘れなく
433 :
デフォルトの名無しさん :2005/05/04(水) 21:56:13
Ruby?????????????>>>>>>>>>>>>>>>>>>>>>>>HSP>>>>>>>>>>>>>>>>Lua
こういう意味の無い煽りをしてる奴らはプログラマじゃねーだろうなぁ。 学の無いニートが暇つぶしに自分には理解できない板で テキトーに荒らしてんだろうなぁ。 まったく、リアルではもちろん、2chでも足を引っ張るしか能が無いんだなぁ。
>>434 大好きなHSPが貶されて頭にきちゃった?w
>>419 418を読んで同じ感想を持ったよ。
書き込もうとは思わなかったが。
でも書き込んじゃったのか。
いやー、あまりにも書き込みが多くて釣られてしまって・・・。 っていうのは、言い訳でしかないか。
>>436 とんだ早漏野郎だよお前は。
お前にはがっかりだよ。
リファレンス以外に、まず初心者が読むとよいページ ってありませんか?英文でかまわないんで(日本語ありそうにないので)
>>440 こんなもん使えればそれでOKな話だろ。
これ使ってどこまでどんなことがしたいのかわからないとリンクを貼る方も困る希ガス。
442 :
:2005/05/05(木) 18:40:24
使ってみたけど、スタックいじらにゃあかんのって使いにくくてしかたないよ。
そんなあなたにluabind
444 :
デフォルトの名無しさん :2005/05/18(水) 14:11:40
luaをjavascriptのような感じにしたいと思って修正しているんだけど for文の修正の仕方が分からないッス。 lparser.cのfornum()を修正すれば良いのは分かっているんだけど、、、 やっぱり for (i = 0; i < 10; i= i+1) { ... } のような記述にするのって難しい? だれか教えて! ちなみに、do-while文の追加と//コメントと/**/の複数行コメントの追加は 簡単に出来たデス。
446 :
デフォルトの名無しさん :2005/05/18(水) 22:38:21
>>445 はぁ?何言ってんの?
乞食は消えろカス
447 :
444 :2005/05/18(水) 23:31:22
>>445 公開は全然問題なイッス。
ライセンスの関係でluaを弄ってるけど、本当ならSpiderMonkey
で十分なんですよねぇ。
SMのライセンスのどこに問題が
449 :
444 :2005/05/18(水) 23:47:56
>>448 SpiderMonkeyのライセンスがよく分からなかったのが問題です。
前にSpiderMonkeyを取ってきて見てみたらライセンスのファイルが
見当たらなかったです。ソースの先頭には書いてあったが、
ソース毎に違うライセンスの奴だったりって記憶にあるんですが・・。
つか、もしSpiderMonkeyのライセンスを記述してるサイト等が
あったら教えて欲しいです。
つか、SMって省略はどうよ?
つーかLGPLとかフリーのライセンスで訴訟が起きたことあんの? こういうのってライセンス厨のオナニーにしか見えない。 オプソでしかありえない問題だしw
へ? 何度もあるじゃん。
454 :
444 :2005/05/20(金) 22:56:48
>>450 >>451 有難う御座います。
今度検討してみます。
で、for文の追加出来ました。
お騒がせしました。
455 :
デフォルトの名無しさん :2005/05/23(月) 17:55:29
これってVC++6で使えるようにするにはどうすればいいですか。 ただヘッダをインクルードすればよい? なんかexeとか落ちてたんですけど、これってどういうことでしょう。 どういう仕組みで動くのかよくわかんないです。 とりあえずVC++で使えるようにするまでの設定と、 どういう仕組みで動くのか、どなたか教えてください。
ヘッダファイルをインクルードして、ライブラリファイルをリンクすればいいと思うよ。
そうですか。ありがとうございました。 ひろったluac.exeとかはコンパイラですかね。
100 ' 110 A=2 120 B=3 130 C=7 140 A=13 150 C=A+B 160 B=C*2 このプログラムが実行された直後、つまり160行目まで処理が終わったとき、 変数A,B,Cの値はそれぞれいくらか? A( )B( )C( )
460 :
デフォルトの名無しさん :2005/05/27(金) 18:25:08
あきらめる
そこをなんとかお願いします。
そのlua_tonumberを参照してる箇所を削れ
それよりlua使いにくいよ・・
465 :
460 :2005/05/27(金) 19:15:48
>>463 そうするとLuaの関数全部消えちゃうのですか…
じゃあ全部消せよ
467 :
460 :2005/05/27(金) 19:18:13
消したらプログラムにならないと思うのですが。
■[2004/3/1] いかに自分がゴミであるかを思い知る。
469 :
460 :2005/05/27(金) 20:53:56
[プロジェクト]→[設定]からライブラリをリンクしたら うまくいきました。 [オプション]の所に設定するのと何が違うんだろう。。
Lua 5.1 (work6) is now available for testing at
http://www.lua.org/work/lua-5.1-work6.tar.gz Here are the main changes since 5.1w5:
- standard distribution in only one library (lualib.a merged into lua.a)
- `loadlib' no longer global (packaged inside `package')
- better luaconf.h
- debug information includes last line of a function definition
- metatables for all types
- new "primitive" getn
- new `mod' (`%') operator
- new math functions
- new operation *t (for size of t)
- new protocol to open standard libraries
- using `require' to implement `-l' in bin/lua
There are probably several other small changes that we forget right now...
All the usual caveats of work versions still apply, including the lack
of documentation and the plea for your feedback.
This is really the last work version before 5.1 (alpha), for which no ETA
currently exists. :-) For that, we have to work on the documentation.
Enjoy.
--lhf
まるでvector-lispだな
楽できると思ってlua導入してみたけど、他と比べてプログラマの負担が大きくないかコレ
>472 他のって例えば何?
PythonとかRubyでLuaと同じような事ってできないのですか?
できないよ^^
476 :
444 :2005/05/30(月) 04:05:04
個人的に気に入らない部分を修正したluaを置いておきます。
http://xbb.jp/uchichi/ulua-5.0.2_2005_05_30.lzh 主な追加は
・switch文の追加
・Cのfor文ライクな奴を追加
・continueの追加
・//と/**/のコメントの追加
など
主な修正は
・~=は !=に、andは&&に、orは||に、notは!に。
・数字の0は偽に、数字の0以外は真に。
など
詳しくは、uLua.txtを見てね。
暇な方は、試してみてね。
477 :
デフォルトの名無しさん :2005/05/30(月) 09:26:38
せっかくだから5.1にしてよ
>>444 おい!!!!すげええええな!!!!!!!
do end を { } にしたとこのほうが、インパクトでけぇ!
>>444 乙です。
これから活用させていただきます。
481 :
444 :2005/06/01(水) 03:07:14
482 :
デフォルトの名無しさん :2005/06/01(水) 03:26:49
>>481 Lua5.1に未対応というバグがありますよ
(´ー`).oO(こういう人は大抵5.1じゃなくても十分な使い方しかしてないんだよね…)
>>444 本家にフィードバックするというのはどうでしょう?
>>482 みたいな注文もなくなりますよ。
受け入れられるわけねー
いやいや、メジャーバージョンアップならチャンスあるんじゃね? 他の言語でも後からforeach増えたりしてるし そのままパッチ適用するかはともかくアイデアは面白いと思うよ
え?その面白いアイデアって何? 構文をC風にしたってだけのようにしか見えんが。
顔文字の類を関数とか変数に使えるとおもしろいだろうけどね。 まぁ実用性は皆無で、純粋にネタとして。
「面白い」かどうかは主観の問題なので
>>487 が面白いと思わなくてもどうでもいい。
>>489 ああそう。
で、Lua開発者なら「C構文にするとは面白いアイデアだ」とか言うと思ってんの?
思ってなくても提案してみる価値はあるんじゃないかという話なんだけど。 なにか Lua には文法の拡張を提案してはいけない特殊な理由でもあるの?
「アイディア」って単語にも粘着してるんだと思う
普通に考えて構文の追加ならまだしも、 根本的な変更なんて採用されるわけねーだろ…。 もしC構文の方がいいと考えてるなら、最初からそうしてるだろうし。 C構文風にもどちらでも書けます、なんて害にしかならねーし。
C構文のほうがメジャーで受けもいいんだから、本家をのっとる勢いで やっちゃえばいいんだよ
495 :
1 :2005/06/01(水) 23:16:12
continueが大半のML購読者に支持されているにもかかわらず導入されてないあたり、 かなり開発者頑固ぽいよ^^;
497 :
デフォルトの名無しさん :2005/06/02(木) 07:30:28
Wikiにpatchを集めたページがあるので、そちらに載せてみては?
>>444
開発者がそんなクズじゃ、この言語の未来ないよ
499 :
444 :2005/06/02(木) 22:14:10
500 :
444 :2005/06/02(木) 22:24:48
で、本家に取り込んでもらうのは無理でしょう。 switchの追加とかだけだったら可能かもしれませんが、 そもそもswitchの追加なんて、luaの開発者なら数分で出来る レベルです。continueは、luaのVMにFOR文用のオペコードが あるので、ちょっと面倒かもしれませんが。 でもって、5.1ですが、luaをアプリに組み込んで 使用することしか考えていないので、5.1に対応する理由が 特に見当たらないです。 アプリに組み込んで使うのに、マニュアルを見ながら書くってのでは 面倒なので、ありがちな構文っぽく修正しているのでした。
501 :
デフォルトの名無しさん :2005/06/03(金) 02:16:11
あはは、こんな汚い言語いらないよ
そもそもなんでその汚い言語がもてはやされるようになったんだっけ
C言語だって十分汚いと思うが。
JavaScript は比較的奇麗で組み込まれているアプリも多い Scheme は奇麗で実装も多いけど、S 式にアレルギーある人も多いからなぁ あとは Python と Ruby か Lua は適度に汚かったのが評価されてたのかと思ってたけど...
506 :
デフォルトの名無しさん :2005/06/04(土) 11:40:59
PythonやRubyは実装がデカイ JSは適当なライセンスの実装が無い
モズィラの奴とか
当世、C言語風と言わずにJava言語風と言えばあんまり波風立たないのではないかと思ふ。
509 :
デフォルトの名無しさん :2005/06/04(土) 14:43:57
C#風だろ Javaはまもなく過去の言語となる
で、結局Luaは死滅するの?
511 :
デフォルトの名無しさん :2005/06/04(土) 15:58:51
スクリプト埋め込み用として死滅しない
んじゃECMA Script風にするかね
M$ が Lua をパクって LScript なるものを開発した! というのを想像しちまったぜいちくしょうめw
構文とか表面的な所はまだまだ改良の余地があると思うけど、
Luaは実行パフォーマンスも結構いい線行ってるよ。
http://dada.perl.it/shootout/ みる限り、Ruby/Python <=> C/C++の大体中間くらい。
スレッドや、サイズが小さい所等が評価されてる。あと、global変数なしってのも組み込み向けにとっては有難い。
515 :
デフォルトの名無しさん :2005/06/13(月) 17:14:31
luaで指定の行から開始する、または指定の行へジャンプする ことってできますか?
516 :
デフォルトの名無しさん :2005/06/14(火) 00:56:53
"行"にジャンプ?wwww
517 :
デフォルトの名無しさん :2005/06/14(火) 11:10:59
何がおかしいのかわからん。
>>517 たぶんフリーフォーマット言語なLuaで"行"にジャンプだぁ?
ってことなんじゃない。
正直漏れもなにがおかしいのかわかんなかったけど。
でまぁ
>>515 にマジレスすると
Luaにはラベル等もちいたりして途中から実行する機能は
スクリプトの仕様にもCからの呼び出しの仕様にもない。
LuaPlusにはそういう機能があるって夢で聞いたことがあるよ
522 :
521 :2005/06/16(木) 23:49:19
LuaPlus試してみましたが、どうやら変数の内容をファイルに保存する機能しかないようです。 うーん、難しいです。
>522 そもそもなんで「行にジャンプ」させようと思ったの? 目的がわかれば別の対処方法があるかもよ。
分かるスクリプト言語がBASICしかないんです
525 :
521 :2005/06/17(金) 01:50:13
>>523 ゲームのスクリプトにLuaを使おうとしていますが、ノベル系のゲームに
使う場合はスクリプトの実行途中でもセーブ出来るようにする必要があると
思います。
そのためロードして実行を再開する時に指定行からの実行が欲しくなりました。
1. yieldごとにどこまで進行したかを記録しておく。 2. ロード時は、以前の場所にくるまですべて処理をスキップ。 みたいなんでどう
そこまでしてLuaをつかわんでも・・・・・・
>>521 ノベル系作るなら保存以外にも分岐ジャンプ等必要なわけだし
結局ステートマシンくむことになるのでは?
そしたらステートの保存読込だって自分で書くことになる。
まぁ最終的に
>>527 に同意。
自分で一から全部作りたいんならともかく吉里吉里とかあるんだしさ。
529 :
521 :2005/06/17(金) 19:51:11
Luaのソースをいじって、途中行から開始できる機能を作成できました。
なんだかあっさり出来てしまって、あちこちのスクリプトライブラリをうろうろした時間
はなんだったんだろうと、ドッと疲れました。
>>526 その場合だとif文の途中やループの途中ではダメだと思います。
>>527 自作のスクリプトを作成すれば一番いいんでしょうが、自分にはそんな技術がないので、
ライブラリに頼ってしまってます。
>>528 分岐ジャンプは別途作成済みなんです。
ノベルというよりRPGのノベル部分に欲しいので、吉里吉里では無理でした。
最初は「厨か?」と思わせといて、ほんとにつくってしまう実力派が忍びこんでくるスレはここですね
そんなんで実力派って・・・
保守
Lua作った人がgems4に寄稿してた 関係ない記事だけど
536 :
デフォルトの名無しさん :2005/08/08(月) 10:27:02
1FDダウンローダ、という奇妙なものを作ります。 HDDはあるけど、データしかおかない。飛んだら飛んだでざまーみろ、みたいな。 HTTP以外にも全部対応。フロッピー入れて一晩寝てると謎のファイルがぎっしり、みたいなの。 方法ですが、ベースはLinuxで、 そこにgethtmlw みたいなマルチスレッド対応ダウンローダーを、 軽量スクリプト言語で作ればOKかな、と。 この構成で質問です。 1、ホントに軽いですか。実行速度だけじゃなく、バイナリサイズも気になるのですが。ライブラリまで全部入れて500kバイト以下だとうれしいです。 2、複数のTCPセッションを張りたいわけですが、ブロッキングI/Oをマルチスレッドで多重化できますか。 select() を使う方法しかないと、かなりやる気が減ります。
1 ネットプラグインを足して、ギリギリ500kをわりこむのでは。 2 マルチスレッドがありません Cで書いたほうがいいんじゃね?わざわざスクリプトでやんなくても。
1 Luaそのもののサイズは50k以下。
Luaライブラリは必要に応じて追加なので正確なサイズは
必要なLuaライブラリが使用しているCライブラリのサイズによる。
2 マルチスレッドに対応しているので、当然できる
どっちを信じるかは
>>536 次第(笑)
OSのスレッドも使えるけどその部分はCで書くことになるからメリットが...
540 :
536 :2005/08/09(火) 11:10:26
536の意図がよくわからん・・ ネット関係のライブラリが充実してない言語だと厳しいんじゃないかと
意図は簡単じゃん 「Cでまともにプログラミングする能力が無いので スクリプト言語を使いたいです」
543 :
536 :2005/08/11(木) 04:12:20
とりあえず、luasocket インストールしたんですが・・・。 lsocket.so が、カレントにあるときは動くのですが、 /usr/local/share/lua50/ におくと動きません。 パスは通ってるっぽいんですが、何がいけないんでしょうか。
544 :
デフォルトの名無しさん :2005/08/11(木) 04:18:41
自己解決。 export LUA_CPATH=/usr/local/share/lua50/?.so が正解。
545 :
デフォルトの名無しさん :2005/08/11(木) 11:10:09
これ、どうやってやるんですか。 普通にやると、200Kぐらいありますよね。 多分、luac の出力の実行に特化した「何か」を 使うんでしょうが、どこにありますか。 538 :デフォルトの名無しさん :2005/08/09(火) 01:31:02 1 Luaそのもののサイズは50k以下。
おまえが調べてここに結果を書き残しておけば後の人の役に立つ
547 :
デフォルトの名無しさん :2005/08/12(金) 12:48:52
お し え て !!!
548 :
538 :2005/08/13(土) 03:27:08
>>545 オレはWin環境でC標準ライブラリ等をDLLでリンクしているため
Lua部分は50k程度になってる。Linuxでどうなるかは知らない。
>>548 すげえ。ダイナミックリンクしといてファイルサイズが以下略
それがWindowsプログラマクォリティ
551 :
538 :2005/08/13(土) 11:08:40
LuaそのもののサイズはLinuxでもマップファイル見ればそんなもんだろ。 標準ライブラリのサイズなんかしらん。気に入らないなら自力で作れ。
552 :
デフォルトの名無しさん :2005/08/24(水) 17:35:51
多分一度も出て無さそうなので貼ってみる
http://www.luaplayer.org/ PSPでゲームとかLuaで書ける みたいな
Luaは初めてなのですが、C++マンドクセな自分にも
とても使いやすい感がします
書き方が独特でまだ慣れないけど、なんか楽しくなってきた
へぇ〜。大したもんだね。 Luaの移植性の高さが効いてるね。 World of Warcraftにも採用されてるらしいし、そろそろブレイクか?
555 :
デフォルトの名無しさん :2005/09/08(木) 05:34:36
5.1alpha出たってのに静かすぎるのでage
alphaだからじゃね 何がかわったん?
newsしか見てないから気づかんかった
558 :
フンバリャーウンコ・ヨーデル ◆xlAOIq6jZw :2005/09/18(日) 02:01:25
tolua++つこてる奴ぁいねえか
tolua ってコマンドは使ってるけど++は付いてない 俺が使ってるのが実は++という可能性もありそうだが
「トルァッ!!」って読むのか。ちょーかっこいいな。
561 :
フンバリャーウンコ・ヨーデル ◆xlAOIq6jZw :2005/09/20(火) 11:31:33
トルァッ!!を使うとスタックに触れなくてもC/C++とLuaを結びつけられるよね
ごるぁ!は無いの?
なに?
いや、あの、だから、ごるぁ!は無いのかなぁって・・・あの、えと、その・・・ずっと前から好きでした!付き合ってください!
565 :
フンバリャーウンコ・ヨーデル ◆xlAOIq6jZw :2005/09/23(金) 02:47:45
2chブラウザのことか!?
単純にスクリプト覚えるならECMAScriptかPythonでいいんだろうけど Luaの売りって何?高速なの?
567 :
フンバリャーウンコ・ヨーデル ◆xlAOIq6jZw :2005/09/24(土) 11:09:07
Luaはただのスクリプト言語じゃない。 クリーンなライブラリとして実装されてるので、組み込みが容易なことだ。 そしてスクリプト言語の中でとても速いこと。 Schemeを思わせる最小主義。 ライブラリが貧弱なのでstandaloneなら他を使うのがいいだろう。 LuaはC/C++プログラムに組み込んでナンボ。 高速でまっとうな文法なSchemeってところか。
568 :
フンバリャーウンコ・ヨーデル ◆xlAOIq6jZw :2005/09/24(土) 11:10:20
言うの忘れてた。なんといっても名前がカコイイことだ。
「うん。高速」って答えればいいじゃないw
570 :
フンバリャーウンコ・ヨーデル ◆xlAOIq6jZw :2005/09/24(土) 11:17:12
571 :
デフォルトの名無しさん :2005/09/24(土) 23:30:20
なんでもカンでもテーブルで処理しちゃうとことか、 関数が複数の値を平気で返しちゃうとことかが男らしいんだよ
572 :
フンバリャーウンコ・ヨーデル ◆xlAOIq6jZw :2005/09/25(日) 03:35:50
でも女の子みたいな名前である
ブラジルっ娘だからな
そろそろ言語たんの仲間入りをしても良い頃ではないでしょうか。
575 :
フンバリャーウンコ・ヨーデル ◆xlAOIq6jZw :2005/09/27(火) 14:49:53
若そうに見えてもRubyと同い歳なんだし、いいと思うぜ。
とは言え、まだ11歳だぞと(*´д`*)ハァハァ
えー只今、カバレッジの低いサンバの衣装を纏った11歳ブラジル娘を想像しております。 えーと、絵師はいませんか?絵師は?
O -△- ||
11歳つーても人間と比べるなよw
犬猫なら11歳はババァだぜ。
>>577 Luaちゃんのことかー
580 :
フンバリャーウンコ・ヨーデル ◆xlAOIq6jZw :2005/10/02(日) 01:41:09
ほしゅ
実際に実装するには自分でパーサーいじる必要あると思うけれど。
587 :
デフォルトの名無しさん :2005/10/29(土) 18:45:01
だれかいるかな? perl で $actor{$gid}{'name'} とか $actor{$gid}{'type'} となってるやつをluaで表現するにはどうすればいいんだ? actor = {} で、宣言することまでは分かった
588 :
デフォルトの名無しさん :2005/10/30(日) 09:47:49
ここでRagnarokって単語を見るとは思わなかった けど、ホムの為に必要なんだよね確か
>>589 そうそう
homuのAI見てるとBOTのように見えてくる orz
メモ1 GetActors () - 配列で画面内のモンスター、キャラクターのgidが入ってる (アイテム等も入ってる可能性有) 例 local actors = GetActors () for i,v in ipairs(actors) do if (v ~= owner and v ~= myid) then if (IsMonster(v) == 1) then -- <-モンスター判定(枝のmobも判別可能) enemys[index] = v index = index+1 end end end IsMonster(v) とか GetV (V_TARGET,v) v には GetActorで取得できる gid を入れる
592 :
デフォルトの名無しさん :2005/11/03(木) 11:17:31
RagnarokOnline\AI\AI.lua OnATTACK_ST の攻撃部分 if (MySkill == 0) then + local calc + calc = GetTick () - MyAttackTime + if (250 < calc) then Attack (MyID,MyEnemy) + MyAttackTime = GetTick () + end else ウェイト入れる (この場合 250ms) 入れないとき 125ms 間隔で攻撃 (008Aパケは ASPD依存でかえってくるので 700-900msぐらい) 攻撃を鯖任せにできるフラグがあるはずだが使用してない (0233パケ)
PSPのluaplayerでゲーム作ってます。 宣言するだけでテーブルが構造体になるlua面白いのですが、 そのテーブルのコピーは一発ではかけないのでしょうか? ゲームの初期化に使いたいのですが… ----------------- InitData={ Mode=0, Score=0, Life=0, } GameData={} GameData = InitData --これだとInitDataのポインタをGameDataに渡すだけ。 GameData.Mode=1 -- InitData.Modeも1になる ----------------- C言語ライクにコピーして欲しいのですが。 foreachを使用するのでしょうか。理解がおいついてません。 現在は仕方ないのでコピーする関数作ってます。 CopyGameData(des,src) des.Mode = src.Mode ・ ・ end メンバ増やすたびに書くのは絶対バカだなーと思いながら 書いてるんですが。
もうちょっとマニュアル読め
「宣言するだけでテーブルが構造体になる」 この表現だけでその人のバックグラウンドがわかるな
Listとこっちどっちが組み込みに向いてるかな?
597 :
593 :2005/11/04(金) 02:22:01
レベルの低い書き込みですいません。 マニュアル読んでもまだ分かりません。 一つだけ知りたいのですが、 テーブルの実体を一発でそのままコピーできる 書式・関数は存在しますか?
簡単にやるならこうかな? for k,v in pairs(src) do dst[k]=v end lua-l archiveを"Deep copy"で検索す・・・うわめんどくせえ
601 :
600 :2005/11/04(金) 15:38:04
通常こんなもんでいいんじゃね? テストしてないけど function tableclone(src) local dst = {} for k,v in pairs(src) do if type(v)=="table" then dst[k]=tableclone(v) else dst[k]=v end end return dst end
ぎゃ、インデントなくなった・・・ function tableclone(src) local dst = {} for k,v in pairs(src) do if type(v)=="table" then dst[k]=tableclone(v) else dst[k]=v end end return dst end
604 :
593 :2005/11/06(日) 00:32:25
例のベンチマークでいい数字出してるから注目しております Java用スクリプト言語 Groovy C/C++用スクリプト言語 Lua って感じかな?
Luaって、16進数指定出来ないよね? 16進数文字列を受け取って、10進数にして返す関数作った。
609 :
593 :2005/11/16(水) 03:50:16
>なんか循環参照してるんじゃない?
本当ですね。
597は自分だ。
正確には
>>599 さんでした。
すいませんでした。
610 :
:2005/11/21(月) 23:28:23
>>39 のNJS JavaScriptはNGS JavaScriptに名前が変更している模様。
freshmeatにあるみたいなんだけど、ないのでDebianのを落としてきた。
あと、Smallも名前がPawnに変わっていた。
615 :
:2005/11/25(金) 21:24:29
>>613 過去ログみてくれ。Luaみたいな小さな言語もOKのハズ
次は、スレタイ変えてくれ。
[Lua]Lightweight Language統合[Io]
で。
>
>>39 のNJS JavaScriptはNGS JavaScriptに名前が変更している模様。
逆じゃね?
617 :
1 :2005/11/26(土) 14:22:12
テンプレどうする? お勧めのHPキボンぬ。
621 :
611 :2005/11/28(月) 20:03:36
>>616 ああごめん。確信はないや。
一次配布元がわからなくて、Debianのパッケージがngsだったので、
てっきりnjs→ngsに変わったのだと思っていた。
>> 618
まんまperlに見えるね。
しかし、なんでこう、検索しづらい名称を付けるのかなあ。
Luaスレでいいよ
Lua5.1出ないなー。 betaの次はrcなのか?それともgamma? 本当に年内に出るのか不安になってきた。
質問、↓のソースはDeepCopy になってる? ↑のほうで出てたソース改変しただけなんだが function deepcopy(table,fc) do if type(fc) == "undef" then fc = { } end local ret = { } fc[table] = ret for k,v in pairs(src) do if type(v)=="table" then if fc[v] then ret[k]=fc[v] else fc[v] = tableclone(v,fc) ret[k]= fc[v] end else ret[k]=v end end return ret end
625 :
デフォルトの名無しさん :2005/12/15(木) 23:41:28
Luaの処理を中断する関数ってないのかな? os.exitだとプロセス落ちちゃうけど、そうじゃなくてC側に復帰したい。
suspend だか、yield じゃね?
pcallで呼んでるならerrorで戻るよ。
>>626 >>627 マ板がこんなに親切な板だとは思いませんでした。
これから調べてみます。
本当にありがとうございました。
subaraC
631 :
デフォルトの名無しさん :2005/12/27(火) 13:45:30
保守
hoshu
>>624 しばらくここ見てなかったので超遅レスだけど・・・
なんか余計な改変してるようにしか見えないけどなぁ。
typeが"undef"返したりしないと思うし。
元々は再帰するコードだったけどそうもなってないし。
そもそも何をしたいのか仕様がわからんし。
5.1rcが出てるage・・・ 寂しいのう・・・
何気にリアルタイムでパラメータをいじらないタイプのゲームとかでよく使われているよ。 縁の下の力持ちって感じ。
ゲーム外車の人はあんま技術情報書き込まないからなぁ
秘守義務があるからね 技術情報を漏らしたらクビになるし
守秘義務を秘守義務といい間違えるか? どうせ仕事もしたことない学生が知ったかしてると予想。
639 :
:2006/01/13(金) 22:17:47
そうかっかするな。守秘義務あるのは事実なんだし。
Lua見たいなオープンソースソフトウェアに対するノウハウが、 守秘義務の対象になるとはとても思えない。 たとえそのノウハウを業務で培ったとしてもね。プライベートでも 十分知りえる範囲のことだし。 PS2の黒本に書いてあった情報まとか、社内ライブラリの仕様を そのまま書く、とかじゃなきゃ、守秘義務違反にはならないだろ。
まぁ、PS2の黒本の内容はほとんどPS2Linuxで公開されたけどな。 社内ライブラリの仕様なんかは多少漏れてもかまわんけど それを設計した人間の転職が中小の開発会社には一番困る。 Luaの話から脱線してスマソ
C#で書いたアプリにLua組み込んで使ってる人いますか?
それ見て飛んできますた。
地味にrcのバージョンが上がってるな。今rc3か。
知らないうちにSWIGが対応してる
自作ゲームで利用してみることにした 便利すぎて泣けてくる
スマソ、pre-releaseだった・・・。
652 :
デフォルトの名無しさん :2006/02/22(水) 00:03:31
Lua 5.1 age
ついにきた
654 :
人人 :2006/02/22(水) 18:36:34
a
5.1って昔から無かった?
出たばっかりじゃない? working版やベータ版は、かなり前からあったけど・・・。
657 :
デフォルトの名無しさん :2006/02/24(金) 02:37:50
出張している間に正式版 5.1が・・・・
5.1は処理系のエンディアンが異なるとluacが吐いたバイナリが使えないのなー 5.0は型のサイズさえ一致していれば大丈夫だったのになぁ...orz...。
http://www.squirrel-lang.org/ Luaからこっちにうつった。
GCではなくて、参照回数をカウントする方式。
Classやらなんやら充実してるぶん、サイズもちょっとデカいかな
配列も0からはじまるつか、配列がべつ扱い
s<- ["a","b","c","d","e"];
>>659 結構よさげだね。
Luaをオブジェクト指向にした感じだな。
実績はどんなもんざんしょ
662 :
:2006/03/04(土) 01:34:25
Game用に考えられているみたいだけどGameの世界でもLuaが浸透してきてる からなぁ。スクリプト組む人達が覚え直しだと組み込みは難しい。
>>659 "mixed approach ref counting/GC" って書いてあるから、循環参照とかの
部分は GC で解決してるんじゃないかな。
>Squirrel2
最新の2.1βはこちらから
ttp://wiki.squirrel-lang.org/ >>660 Luaより文法がCに近くてなにかといいかと
>>661 半年ぐらいおっかけてるけど
有名なあるゲームにつかわれたとか
まだ聞かないです
で、自分でつかってるけど
安定してる・・・と思います
>>663 Luaよりちょっと細かいかも
floatとintの区別が(内部的に)あるとことか
より、プログラマが自分で便利につかうためのやつかもね
>>664 そういえば、GCを実行するためのAPIがありました
666 :
:2006/03/05(日) 00:40:14
>>659 いいねえこれ。
配列作れて、そん中にテーブル作れるのかあ。
俺の欲しかった機能だ。
まだ検証してないけど、これプログラムから使いやすい?
Luaはなんか使いにくくてさ。
Cインターフェイスはluaと似てる。
Luaと同様のスタックベースだな
パフォーマンス次第だな。たぶんluaより低速だと思うが。
どっちにしてもちっとも遅いとは思わん
LuaのGCがどこまで改良されたかだなぁ >mixed approach ref counting/GC ってなら、これのほうがいいようなな気がする。 (メモリは多少大食いになるかもしれないけど)
GameMonkeyってどうですか? 文法がCに近いみたいで使いやすそうだけど。
674 :
デフォルトの名無しさん :2006/03/07(火) 14:10:26
Squirrel 上げ
GameMonkeyって名前が雑魚っぽい
>>672 やっぱり、GC時の処理の重さじゃないかな
GameMonkeyって、何度も名前挙がってるけど ここの住人は全然しないね
678 :
:2006/03/08(水) 05:10:01
GameMonkeyはやたらと反応うすいから Squirrel2つかってみますね
>>679 5.1からはインクリメンタルGCが実装されてるから、
大分マシになる・・・かもしれない。
Cとコードの共有も一部出来そうだからGameMonkeyを使ってみよう。
今日からラグナロクでluaを使ったシステムが入るから荒れるかもしらんな
a
>>684 表記は必須じゃないはず。
ZLibはばんばんゲームにつかわれてるけど、
表記されてるのみたことないっすね
687 :
1 :2006/03/16(木) 16:08:48
とりあえず、Wikiでも作ってみようかと思うんだが必要?
688 :
:2006/03/16(木) 16:31:16
いいね。 Luaに限らずLightWeightLanguageで作ってよ
そんなにでかい構想を持っても誰も編集しないぞ ターゲットは絞れ
でかくないよ。 LUAに絞られても困る。
別々に作ればいいじゃない
でかいだろ。 Lua Perl PHP Python Ruby Scheme etc... 全部網羅するのか?
項目ふやすぐらい余裕だろ
このスレのWikiを作ろうかって話なんだから 看板はLuaで一応Luaの情報メインだけど アプリ組み込み系なら多少の脱線はあり、ぐらいでいいだろ。 メジャーな言語は他所でやってくれ。
695 :
:2006/03/17(金) 17:49:21
LightWeightLanguageがでかすぎるから。 やっぱ組み込み向けscriptつーことで
作ってから方向転換すればいいだろう タイトルがどんなでも、項目作って編集者募集としておけば問題なかろう つーことで 1 will 乙
あとから言語ふやしたりできるんでしょ? >Wiki まずはLuaだけでやればいいんじゃないかな タイトルかなんかはLightWeightLanguageでいいじゃん
つうか言語ごとのwiki作ればいいじゃん。
TextSS のWindowsXP(Professional)64bit化おながいします もしくは64bitにネイティブ対応したテキスト置換ソフトありますか?
>>699 なぜそれをここで聞くのかが分からない。
なしてそこまでLightWeightLanguageでまとめたがるのか 明らかにLua wikiの方がわかりやすいタイトルと思うのだが
うむ。Lua は十分に良い案だ。 熱が冷めないうちに作ってプリーズ。
このスレが、LightWeightLanguageの情報OKってなったからだろ。 LuaだけでWikiほんとに必要か? マニュアルだけで結構十分じゃない?w このスレの情報の出具合からいっても、 Wikiつくっても寂れるの見えてない?
英文を全く読もうとしない奴のためのビルド方法 BNF記法を全く読解できない奴のためのチュートリアル
そんな低レベルなwiki作るなよ。
そんな奴らは日本語でも理解不能で2chで中途半端な教えて房になるだけ。
それとも
>>704 がすべて親切に答えていくのだろうか。
706 :
デフォルトの名無しさん :2006/03/19(日) 06:49:17
ゲームでよく使われるというが、どういう場面でもちいるのか知りたいなぁ。 データの初期値設定に使うってのはどっかで見掛けたけど。
初期化以外に使い所無いじゃん。
最近のじゃROのホムクルAIとかあるじゃん。RO自体よく知らんけど。 組み込みなんだから好きなように使ったらよいかと。 さすがにSTGの弾幕記述とかは速度的に無茶だけど。
白い弾幕くん.
710 :
1 :2006/03/21(火) 17:29:34
乙
712 :
1 :2006/03/21(火) 21:02:25
やったツナガッタヨ
おめでと。中の人としては Luaをメインとして組み込み用言語全般を扱う予定?
714 :
:2006/03/21(火) 21:47:43
1 乙
>>710 乙
でも設置するより遙かに維持するのが難しい
設置する奴は、設置しただけで自分の役目を果たしたと考えるから困るな
718 :
1 :2006/03/22(水) 11:56:06
発展させる自信があるから、わざわざここで告知してるんだろ?
>>1 659あたりから話題になってた Squirrel は含めないの?
# おれは使ってみてもいないので正直よくわからないのですが
>>718 チュートリアル作って欲しい
今製作中のゲームで使う予定だから頼りにしてるぽ
>>720 Squirrel?そんな実績も何も無いものwikiの立ち上げに含まれても。
なんか自分では何もしない他力本願な書き込みする奴だな。
723 :
:2006/03/23(木) 04:21:44
>>720 Squirrelの名前空間彫ればイイだけぽ
Luaの派生だしなぁ
725 :
1 :2006/03/23(木) 19:01:49
BulletML(とLua)は含めるべきか、含めないべきかな・・・。
弾幕記述言語。
>>719 カッとなって作ったので自信が無い。(w
>>721 そこらへんは,Luaの参考サイトに書いておいたよ。早速。
726 :
デフォルトの名無しさん :2006/03/27(月) 00:41:15
squirrel2.1あげ
>>1 お!いつのまにかいろいろ言語がふえてる!乙!
728 :
:2006/04/04(火) 22:30:03
おお!本当だ乙!!
729 :
:2006/04/04(火) 22:34:52
あ、ちょっといいか? 記事書くとき、名前空間つかってよ。 どの言語かわかんない。 C++で使うとリンクエラーするのですが? ↓ Lua/C++で使うとリンクエラーするのですが?
730 :
1 :2006/04/08(土) 11:08:03
おいおい、2chで吊るすなよ。 そんだけ有名なページ知らん奴はほっとけ。
吊るすって意味不明なこといってんじゃねぇよ コメントもできねぇんだから、荒らすこともできないねぇよアホ。
煽りもできてないねぇよ
普通に見れるぞ
737 :
:2006/04/20(木) 22:35:31
重いというか編集しようと更新しようとしたら、そこから先に進まん。 めちゃめちゃ腹立つ
つーか、ページの更新ができねえよ。 なんなら、こっちでwiki作ろうか?
739 :
735 :2006/04/20(木) 22:39:47
今見たら、すんなり見れた スマソ
740 :
フンバリャーウンコ・ヨーデル ◆xlAOIq6jZw :2006/05/01(月) 09:47:53
Luaはschemeと同じ匂いがする。 first-class関数、closure、lambda、lexical scope、末尾再帰。 それでいてhuman-friendlyな文法なのがいい。
>first-class関数、closure、lambda、lexical scope これらはclosureに対して不可分な気がする。 末尾再帰(末尾呼び出しの最適化)は言語仕様というよりは処理系の仕様だからなぁ。 schemeは言語レベルで保障されているようだけど、Luaはどうなるんだろう。
742 :
フンバリャーウンコ・ヨーデル ◆xlAOIq6jZw :2006/05/02(火) 14:50:23
schemeはいろいろ実装があるけど、luaは基本的に1つだよね
いま現在はそうだけど、これから処理系が増えたときにLuaは言語として 「どうなるんだろう」(どうするんだろう)と。 末尾呼び出しの最適化という概念自体が処理系の都合にすぎないんだよ。 本来、言語は関係ない。
744 :
フンバリャーウンコ・ヨーデル ◆xlAOIq6jZw :2006/05/02(火) 15:20:15
さあな、じゃあ聞くけどperl, ruby, python, erlangに複数の実装があるのか? わしが言いたいのは今のluaがschemeっぽいということだ。
perl と Python には複数の実装があるだろ。 lua が scheme っぽいと感じるのは構わないんじゃん? その目で見たら scheme っぽい言語は沢山見つかると思うよ。 俺は別の括りの方がそれらしい気がするけども。
746 :
フンバリャーウンコ・ヨーデル ◆xlAOIq6jZw :2006/05/02(火) 15:36:14
わしはRadium Software Developmentの中の人ではない
世の中狭いもので同じようなこと思ってる人はいるもの
>>745 minimalismで作られてる点もschemeと共通してると思う
まあluaはmulti-paradigm言語だからひとつにくくれない
closureがあるとあんなことやこんなことができてウハウハだ
RubyにもYARVがあるね。 >わしが言いたいのは今のluaがschemeっぽいということだ。 それは始めからわかっているから落ち着けw 「末尾再帰に関しては言語仕様と呼んでいいのかが曖昧で、 この先Lua言語はどうするつもりなのか」 という疑問をぶつけたにすぎない。 (結果的に)Schemeと似ているという点について否定するつもりは一切無い。 ただ主観になるけど、ECMAScriptがLuaに似ていると思っている。 Luaは連想配列として扱えるtableがオブジェクトの基本であり、 ECMAScriptでは基底のObjectがやはり連想配列として扱える。 お互いprototypeベースで、metatable.__indexとprototypeプロパティが 似たように扱える(new周りが違うけど)。 closure周りも同様に扱えるため、多くの部分でノウハウの流用が効くと感じた。 Schemeは門外漢で比較判断できないから、どちらがより似ているかという 部分には触れないでおくけど。 あと一カ所訂正。 Perlのclosureは、関数のファーストクラスオブジェクトなしに実装してたみたい。 たしかにclosureには参照でも十分っぽい。
YARVは将来的にrubyに統合されると思うが
つまらないレスだなぁ。 YARVという名前が過去のものとなるまでは、Yet Anotherに過ぎないんだよ。 それを複数の実装と言わずになんと言う。
750 :
フンバリャーウンコ・ヨーデル ◆xlAOIq6jZw :2006/05/02(火) 19:47:32
YARVは第二の実装というよりもbranchを作ったようなものだと思んだが
コテつけてしゃべるほどいいこといってない
>フンバリャーウンコ・ヨーデル このコテハンは面白いと思って付けたの?
753 :
フンバリャーウンコ・ヨーデル ◆xlAOIq6jZw :2006/05/02(火) 21:19:44
いや。ヒョードルの試合のことを考えながら糞してたときに思い付いた。
754 :
フンバリャーウンコ・ヨーデル ◆xlAOIq6jZw :2006/05/02(火) 21:21:14
>>751 わしはまだ未熟者なので精進します。
名無でクソレスするよりマシだと思ってくれたまえ。
うんこさん、あんまりageないでね。
したり顔のコテハンがでてきたら腹が立つのもわかるが、 こんだけ大きな顔をしているんだから、きっと Wiki のほうに 大きなフィードバックをしてくれることだろう。 名無しで書かないのは、そういった責任感の表れという 以外には考えられない。 「俺が lua コミュニティを盛り上げる!」という決意表明 と受け取るべきだろう。
書き込みたいんだけど、wiki更新できない・・・ 俺だけ?wikiwiki.jpに規制されてんのかな
759 :
フンバリャーウンコ・ヨーデル ◆xlAOIq6jZw :2006/05/03(水) 06:50:21
おはようございます。月は我々とともにある。
760 :
フンバリャーウンコ・ヨーデル ◆xlAOIq6jZw :2006/05/03(水) 08:19:29
流石だ期待してるぞ
>>757 そうだよな。まさかコテまでつけてこんな内容のないレスばっかってことは人
間としてありえないよなぁ。
>>760 英語なら幾らでも資料があるだろ
水を差すな馬鹿
764 :
フンバリャーウンコ・ヨーデル ◆xlAOIq6jZw :2006/05/03(水) 09:47:36
>>763 馬鹿は言い過ぎじゃないのか?
だったその資料を翻訳するとかできるだろう?
日本人向けの情報なら、日本語の扱いなど日本人固有の問題を取り扱うべき。
技術英語など大きい辞書と英検準2級の英語力があれば読める。
あーじゃま
まず自分が率先してやれ。
767 :
フンバリャーウンコ・ヨーデル ◆xlAOIq6jZw :2006/05/03(水) 12:29:54
英語読む気ないおまえらは厨房か? プログラミングする人は英語が必須
英語を読む時間を掛けたくない
769 :
フンバリャーウンコ・ヨーデル ◆xlAOIq6jZw :2006/05/03(水) 12:40:36
だったら英語にたくさん触れて速読力をつけろ 英語が国際語である以上英語から逃げられない わしも読むのは遅いけど恐れず真向から立ち向かう
英語の説明よりはサンプルコード集の方がいい。
だーかーらー 英語を読むのとluaを使うのは別問題でしょ 英語が読めるに越したことはないが luaを使うためにその時間を掛ける無駄はしたくないと言ってるの 組み込み言語だけに構ってられないんだよ
じゃあ英語の読める人間を雇えば?
氏ね
774 :
フンバリャーウンコ・ヨーデル ◆xlAOIq6jZw :2006/05/03(水) 13:05:16
>>770 それは同意
サンプル大事
>>771 別問題とは言いきれない
そもそもluaは外国産まれだから資料が英語だらけなのは当然だ
そんな文句言うんだったらRuby使えば? 日本語のドキュメントいっぱいあるんだから
scheme処理系gaucheも日本人が作者だ
>>772 半分同意
国際社会を生き抜く上で英語力を高めるのが大事
775 :
フンバリャーウンコ・ヨーデル ◆xlAOIq6jZw :2006/05/03(水) 13:17:39
Luaに手をだしてるってことはおまえらプロの技術者だよな? 英語すら読めないなんてプロとして恥ずかしくないのか? 「人間向上心なくしたらおしまい」イチローの言葉だ わしはイチロー嫌いだがその言葉には同意する 自分の力が足りないと感じたら勉強しろ それが嫌なら人雇って金払え 金も時間もないならやめちまえ
このコテハンはツッコミどころが多すぎて困る。 とりあえず日本語なんかでLuaの話をしているこのスレは不要ってことだな。 英語のwikiを更新できるだけの英語力もあるんだろ。 英語圏行ってこいよ。バイバイ。
777 :
フンバリャーウンコ・ヨーデル ◆xlAOIq6jZw :2006/05/03(水) 13:28:46
Luaに手をだすのって学生が多いと思うが
779 :
フンバリャーウンコ・ヨーデル ◆xlAOIq6jZw :2006/05/03(水) 14:03:59
学生か、最近の学生の学力低下は悩ましい問題だ 分数の計算すらできない大学生もいるらしいし
こいつマスコミに踊らされすぎだな
C++からLuaを使おうとして試行錯誤しています。 普通にLuaスクリプトを実行するところまではどうにか漕ぎ着けたのですが スクリプト内で他のスクリプトファイルを読み込もうとrequireやdofileを 記述したところで突然luaL_dofileがエラー(1なので構文エラー?)を 返すようになってしまいました。 require等を消して、呼び出し元のスクリプトに全部記述すると きちんと動作するので呼び出そうとしてる関数は問題ないと思うのですが・・。 これが原因じゃね?と思いつくものがあればご教授ください。
784 :
フンバリャーウンコ・ヨーデル ◆xlAOIq6jZw :2006/05/03(水) 19:01:26
tolua++
785 :
782 :2006/05/03(水) 20:15:27
>>783 ご教授にはそんな意味があったんですね。
失礼しました。
ちなみにエラーメッセージは
「attempt to call global 'dofile' (a nil value)」でした。
dofileなんてもんは存在しないよ、ってことですかね。
で、改めてリファレンスを見直してみたら、基本ライブラリ使うのにも
luaopen_baseなる関数を呼ぶ必要があったようで・・。
それを呼んでやることで無事dofileが動作するようになりました。
(requireのほうは何故かそれでも動きませんでしたが)
おかげさまで先に進むことができそうです。
ありがとうございました。
>>785 5.1で_ALERTは使えた?
ソースから無くなってるように見えたし、試してみてもだめだったから。
Luaは名前がステキ
788 :
782 :2006/05/04(木) 00:08:57
>>786 あ、それ自体は使えなかったですね。
(print_lua_logっていうのがなかったのかな?)
lua_tostring(L, -1)でエラーメッセージ見ろよ、という意味だと解釈して
適当に表示させて見てました。
>>777 流石だ。お前ならやれる! ゾロ目も取ったし!
俺はむしろそっちしか見てないから、遠慮せずにガンガンフィードバックしてくれ
790 :
フンバリャーウンコ・ヨーデル ◆xlAOIq6jZw :2006/05/04(木) 07:48:38
今はschemeの勉強に本腰入れてるから
じゃ、くるなよwwwwwwwwwまじでwwwwwwwwwww
792 :
786 :2006/05/04(木) 12:16:38
793 :
フンバリャーウンコ・ヨーデル ◆xlAOIq6jZw :2006/05/04(木) 13:10:44
>>791 わかったよ、去ればいいんだろ去れば
これより潜伏にうつる
794 :
デフォルトの名無しさん :2006/05/04(木) 17:02:14
二度と来るなバーカ
フンバルト=ヘーデルホッヘ
796 :
デフォルトの名無しさん :2006/05/06(土) 09:56:36
踏んばると、屁出る放屁
797 :
λ計算 :2006/05/06(土) 12:07:12
Luaで関数プログラミングしている勇者はいるか?
functionて名前付けないと呼び出せないんだったっけ? (function(a) return a(a); end)(function(a) return a(a); end)
799 :
λ計算 :2006/05/06(土) 13:44:58
無名関数もある。 function map(func, table) ret = {} for k,v in pairs(table) do ret[k] = func(v) end return ret end tbl = map(function(x) return x*2; end, {3,7}) assert_equal(6, tbl[1]) assert_equal(14, tbl[2])
800 :
λ計算 :2006/05/06(土) 13:46:51
luaの関数っていちいちreturnを書かないといけないのがうざすぎ。
俺はむしろreturnが無いと不安になるが。
802 :
λ計算 :2006/05/06(土) 15:46:27
lispやperlだと書かなくていいからそれに慣れてしまって。 わたしは名前の通りS式厨だ。
ならずっとlispしとけ
804 :
λ計算 :2006/05/06(土) 16:10:02
そんな言い方は冷たいと思わないのかね? わたしはlispに限らずいろんな言語を貪欲に勉強したいんだ。
よろしい
でもreturnだけでreturnできる、それは幸せなことだ
807 :
λ計算 :2006/05/06(土) 16:35:58
そやけど最後に評価した値を暗黙のreturnとしてくれたらいいのに。
>>799 も
tbl = map(function(x) x*2; end, {3,7})
と書けたらコンパクト。
まあね。 それを言うとfunctionも長いとか、thenイラネとかendのぶら下がり 判りにくいとかあるけど。 luaのフロントエンドやめて意味論的にはluaと同じ 適当な整合性のありそうな俺言語作た方がいいかも
もしかしてluaってARM(xscale)で動きますか? 動くとしたら、すごい事です。
810 :
λ計算 :2006/05/06(土) 17:00:46
functionはshell scriptでもあるからよいとする。 endはrubyで慣れてるから平気。 thenは省略できたほうがいいな。 not equalが!=じゃないのは謎。
>809 LinuxZaurusでうごいてるよ
LinuxZaurusのバイナリはどっかに落ちてないですか?
817 :
デフォルトの名無しさん :2006/05/16(火) 22:13:33
lua5.1のGDChartのラッパーって使う人いる? ドキュメントとかオプションの一部はやってないんだけど
>>818 興味はあるけど使い道が無い。ごめん。
権利面で問題無いならWikiとかLuaForgeとかに
あげたほうがいいんじゃね。
LUAの二次元テーブル tbl2 = {{1},{0,2,3},{1},{1}} をC側で読み込むにはどうやったらいいのでしょう。 あるサイトを参考にやってみたんですが、 どうも3回目のlua_next(上の例でいくと最初の1を読み込んだ後)で ホストプログラムごといきなり終了してしまうのです。 自分の環境のせいですかね。
>820 static int trail_table(lua_State *L) { if (lua_istable(L, -1)) { lua_pushnil(L); while (lua_next(L, -2) != 0) { trail_table(L); lua_pop(L, 1); } } else { printf("%d\n", lua_tointeger(L, -1)); } return 0; }
822 :
820 :2006/06/09(金) 11:45:09
ありがとうございます。 ただ821さんのを使用しても、やはりプログラムが終了してしまうので 私の環境が良くないみたいですね。 色々試してみたところ二次元テーブルどころか 通常のテーブルでも終了してしまうことが判明。 何故かフィールド名をつけると何事も無く読めるという謎動作。 NG: tbl2 = { 1,2,3 } OK: tbl2 = { [1]=1,[2]=2,[3]=3 } とりあえずフィールド名をつけて動かしてみます。
823 :
820 :2006/06/09(金) 12:06:42
そしてたびたびの質問で申し訳ないですが 820のような二次元テーブルをC側から登録する方法を 教えていただけますでしょうか。 何となく※のあたりが違うんだろうなぁという気はするのですが。 lua_pushstring(L, テーブル名); lua_newtable(L); ループ開始 ※lua_pushstring(L, テーブル名?); ※lua_newtable(L); ループ開始 lua_pushnumber(L,キー); lua_pushnumber(L,値); lua_settable(L, -3); ループ終了 ※lua_settable(L, ?); ループ終了 lua_settable(L, LUA_GLOBALSINDEX);
>>823 lua_newtable(L);
for (i = 1; i < 10; i ++) {
lua_newtable(L);
for (j = 1; j < 10; j ++) {
lua_pushnumber(L, i * j);
lua_rawseti(L, -2, j);
}
lua_rawseti(L, -2, i);
}
lua_setfield(L, LUA_GLOBALSINDEX, "kuku");
825 :
820 :2006/06/10(土) 14:46:13
おおお、できました。 ありがとうございます!
826 :
デフォルトの名無しさん :2006/06/24(土) 22:03:45
5.1.1 保守あげ
Lua5.1日本語版のインタプリタを作れば200KB近くになり 単体じゃろくなこと出来ないのでLuaGLを使おうとしたら5.0用だったり まぁ5.1からでも使えなくはないだろうとコンパイルしようとしたらどうしてもできず。 やっぱりググっての付け焼刃の知識と Hello World程度しか弄らなかったCの経験じゃ無理かぁ・・・。
知らないことの中で知るべきことを特定して調査し進めていく能力があればできる。
>>827 その前にLua使ってなにがしたかったんだ?
>>829 手軽にゲームとか作れないかなー、と曖昧な目的で。
しょうがないので今はLuaでCUIオンリーのWizardryみたいなの作ってる。
LuaGLのコンパイルにやっと成功。 OpenGLの入門サイト見ながら色々弄ってます。 まぁ、直接Cで書いた方が早いって言えば早いんだけどね・・・。
GLを一通り弄ったらこんどは音楽を再生したくなってきた。 fmodのLuaバインディングが欲しかったけど、 見当たらなかったので自分で作ってみた。 ・・・いちいち命令の一つ一つを実装するのってめんどくさいなあ。 ストレートに動的リンクできれば早いんだけど。
squirrelとやらは結局どうなったのかね?
FMUSIC_*系の関数を9割実装したところで
画像も音声もSDLのバインディング組めば
汎用性も拡張性もいいんじゃね?と思い始めた。
>>833 向こうでもあんまり活発じゃないみたいだな。
ほ
wxLuaのwxConfigでファイルに保存する方法ってどうやるの?
837 :
デフォルトの名無しさん :2006/08/12(土) 03:59:17
SquirrelはやっぱLuaよかダメ?
そもそもLuaも日本ではそんなに使われてねー気がする。 全然組み込んだよーってソフト見ない
RigidChips
それだけ?
組み込むほど大規模なゲームがほとんどないしな・・・
3DモデリングソフトのMarbleCLAYとか、 変わったところでは、 スクリプト言語Luaを用いたロボカップ四足ロボットリーグシミュレータ www.jollypochie.org/papers/JSAI-SIG-CHALLENGE21-kobayashi.pdf なんてのでも使われてるみたい。
843 :
デフォルトの名無しさん :2006/08/13(日) 00:30:23
風立
845 :
デフォルトの名無しさん :2006/08/24(木) 06:10:21
>>743 コーティングスタイルの根底に関わる仕様だから入れるべきだね
末尾再帰だけならそんなに難しい事ではないし。
(schemeは継続も同居してるからちょっと難しい)
846 :
デフォルトの名無しさん :2006/08/28(月) 23:41:16
C++のフレームワーク用のベースとして使うなんての どうだろう?設計レベルで現れるようなオブジェクトの管理は LuaのGC使って管理して、パフォーマンスに絡むようなオブジェクトは C++の従来の考え方で管理する。 また、各タスクやそれらの関係(メッセージ処理や状態遷移マシン定義)の configはスクリプトベースで行い、欲を言えばそれらのコンフィギュレーション からC++のコード吐かして最後に最適化できるようにしたい。 Luaには標準ではプリエンティブなスレッドが無いのでそれは実装しないと だめだけど(LuaThreadでいけるか?)。 現在そんなのを妄想中・・・。
>>846 組み込みスクリプトの正道にしか見えん。
848 :
デフォルトの名無しさん :2006/08/30(水) 23:11:24
>>847 そりゃ大まかに括ればその通りなんだけど。イメージとしては
UMLの実行モデル見たくして部分部分をC++に置き換えて
いけるような物に出来ないかなーと。まあ、単なる妄想だけど。
それは兎も角、
”..”とか使って生成た文字列が以前生成した文字列と内容が
同じな場合、以前の文字列に参照を追加して同じ文字列を複数
生成されない最適化が行われてるみたいね(多分)。
ただ、文字列が多くなると以前の文字列との比較に時間がかかって
しまい文字列生成のパフォーマンスが徐々に落ちてくるっていう、
マイナス面もあるみたい。
某所のGCパフォーマンス調査で文字列を大量に生成&破棄を
繰り返して調査してたけど、GCよりも文字列生成のパフォーマンス
を調査してるようなもんだと思った。
一通り眺めてみたがGameMonkeyが使いやすそうだった。 スクリプト側で出来ることが少なくなるかもしれないが、 組み込みに関してC言語側の負担も小さそう。 小ぶりなフリーゲーム作るならこんなんで十分かも?
>848 Lua 内で利用する文字列はすべて、参照時に「以前と同じ文字列があるかどう か」をチェックしているよ。生成する経路はべつに関係ない。 またそのチェックはハッシュだから、理想的には文字列が増えてもパフォーマ ンスはそれほど落ちない。 ただ、大量生成&破棄の繰返しの場合、ハッシュテーブルの再構成や再配置が 頻発すると思うので、そのコストが効いてくるんじゃないかと推測するがどう か。
>>850 Rehashする必要が増えてくるとハッシュテーブルのサイズを大きくとったりするようなタイプなの?
もしそうなら初期化時のような大量に文字列生成の可能性のある場所であらかじめテーブルサイズ拡大すると実行時のコスト下がるよね?
(ソースを読み下してないからそういうインターフェース無かったらごめん)
852 :
848 :2006/09/01(金) 19:37:10
>>850 私が試したコードは
collectgarbage("stop");for i=1,50000 do ; a=i.."aaaa..(ここ沢山)..a" ; end
です。長い文字列に関しては全文字がHash計算対象ではないので
Hash値が一致する文字列が多くなり、最後の文字列全比較に時間が
かかっているのではと考えています。
>>851 Hashテーブルのサイズは32固定っぽいです(ハードコーディング)
そこから倍々で増やしていくタイプです(多分)
少なくとも文字列用Hashテーブルサイズを指定するインターフェースは
私はしらないです。
問題はプログラム中で固定的に使用する文字列、例えば以下のコード
function set_abc(v) a["abc"]=v end
の”abc”と、実行時に毎回変わる文字列、例えば次のようなコード
function write_abc_with_n(n,v) io.write("abc"..n) end
で生成される文字列["abc"..n]が同じ扱いってのに問題があるのではと
思うのです。
まあ、試したコードが現実的では無いのはたしかですが。
853 :
850 :2006/09/01(金) 20:31:37
>852 あーなるほど、ハッシュ値の一致については考えてませんでした。そういう例 では頻発するかも。 文字列用のテーブルでサイズ指定するインタフェースはマニュアルには公開さ れていないようですね。こっそり luaS_resize すれば出来ちゃいそうな気は しますが。
hoshu
855 :
デフォルトの名無しさん :2006/09/16(土) 18:56:51
squirrelはもう誰も使ってない?
>>855 言語自体は良いのだが周辺ライブラリがね…
トータルの工数を考えると結局luaに落ち着いてしまう
>>856 luaより言語仕様は良いと思える?
あと、luaの周辺ライブラリってたとえば何がある?
>>857 ぶっちゃけluaもsquirrelも機能的にあんま変わらんと思うのだが、
単純に言語の外観がC++に似てるってだけでも好き。
でもsquaddというluabind相当のライブラリはあるが開発が1年以上とまってたり、
SqPlusとかいうライブラリは使いにくい(これはcoroutine関連のことが頭に入ってないのか?)
エクスポートをluabindでやりまくってるのでその時点でsquirrelは無いかなと。
周辺ライブラリとは、つまり簡単に使うためのC++のラッパーってことでOK?
ごめん。そういうことです。 別にsquirrelでも同じことやろうと思えばできるんだろうけど、書くのめんどくさいし。 あるものは使う。
Luaって毎回同じスクリプト実行するのに毎回コンパイルするんですかね。 一度コンパイルしてそれ流用とか、そういう小技ある?
luac
864 :
デフォルトの名無しさん :2006/09/21(木) 13:56:36
865 :
質問 :2006/09/30(土) 15:22:28
Lua5.1をVC++6.0(環境はWinXP, CPU 2GHz, Mem 1GB)から使おうとしている者です。
このスレの
>>358-360 を参考に lua_dofile を luaL_loadfile に書き換え、
サンプルをコンパイルしようとすると以下のようなエラーが出てしまいます。
(なお、includeディレクトリにlua関係のヘッダファイルを全て入れ、
libディレクトリにLuaLib.libを入れてあります)
--------------------構成: Test - Win32 Debug--------------------
リンク中...
c2lua.obj : error LNK2001: 外部シンボル "_lua_close" は未解決です
c2lua.obj : error LNK2001: 外部シンボル "_luaL_loadfile" は未解決です
c2lua.obj : error LNK2001: 外部シンボル "_luaopen_base" は未解決です
c2lua.obj : error LNK2001: 外部シンボル "_luaL_newstate" は未解決です
Debug/c2lua.exe : fatal error LNK1120: 外部参照 4 が未解決です。
link.exe の実行エラー
Test.exe - エラー 5、警告 0
//ソース: c2lua.cpp(▼は改行)
extern "C" {▼ #include "lua.h"▼ #include "lualib.h"▼ #include "lauxlib.h"▼}
int main(int argc, char* argv[]) {
lua_State *lua;
lua = lua_open();
luaopen_base(lua);
luaL_loadfile(lua, "lua\\hello.lua");
lua_close(lua);
return 0;
}
なぜエラーになるのか分かりません。助けてください><
CPUとメモリが役不足なんじゃないカナ?カナ?
>>866 やくぶそく 3 【役不足】
(1)俳優などが与えられた役に満足しないこと。
(2)能力に対して、役目が軽すぎること。
「―で物足りない」
こうですか? わかりません!><
>>865 libディレクトリにLuaLib.libを入れたところでリンクしなければ意味がない。
VCのプロジェクト設定で「リンク」のカテゴリに「追加するライブラリ」みたいなのがあると思うんで、そこで指定する。
あと、luaL_loadfileはファイルをロードするけど、
ファイルを関数化するだけで実行はしないんじゃなかったかな。
lua_callだかlua_pcallだかで関数を実行する必要があるはず。
つまりオーバースペックということだね
>>868 追加ライブラリのパスというところに lib を指定しています。
他のLIBファイルはこれで読めているようなのですが・・・。
>>868 色々調べて自己解決しました。
いつのまにか入っていた.NET付属のコンパイラが悪さをしていたようです。
PATHを変えて試行錯誤してみます。
872 :
デフォルトの名無しさん :2006/09/30(土) 18:13:56
解決したのか試行錯誤中なのかどっちだ
luavs.batでやってもでかいdllしかできないのですが何で? コンパイラはVS2005です。
dll作るためのバッチファイルだから
バイナリ配布所の奴と同じぐらいの大きさのdllにするのは難しいのですか?
VC++2005Expressにて160KBくらいだね。 バイナリ配布んところは110KBくらいだっけ?(たぶんMinGWだと思う) ぶっちゃけ気にしてねえけど。
コンパイラの違いによるもんかね
400KBなんですが・・・
デバッグでコンパイルしてるのでは
luavs.batでやってます
自分でプロジェクト作ってみたら? リリースビルドかつコード生成をマルチスレッドDLLにするくらいだよ、 サイズで気をつけるところと言ったら。 ……次は作動ランタイムの配布で困ることになると予言しておく。
ヒントを元にluavs.batのコマンドラインに/MTを加えたら132Kになりました。 ありがとう。 dllは他の言語から使うため作っていてVSには不慣れなので助かりました。
883 :
882 :2006/10/01(日) 11:12:32
勘違いでした・・・素直にプロジェクト作ります
luaL_dofile でいけました。お騒がせしました。
Patternについての質問です。 "foo1bar2baz3"や"foo1.bar2.baz3"のような文字列にマッチするかどうか調べるために、 string.match("^([%a_][%w_]%.)*[%a_][%w_]$") と書いたのですが、マッチしません。 というかstring.match("^(.)*$")でもマッチしません。 何故ですか? (使用しているLuaのバージョンは5.1です)
> ^([%a_][%w_]%.)*[%a_][%w_]$
Luaのパターンは正規表現とは別物。「*」や「()」の意味も違う。
Luaのリファレンスによると「*」は、
a single character class followed by '*',
which matches 0 or more repetitions of characters in the class.
っつーことで、「単一の文字クラス」の繰り返ししか表現できない。
また、()についても、グルーピングの意味はなく、あくまで
マッチした特定の部位を保存しておく用途にしか使えない。
もし正規表現が使いたいなら、
http://luaforge.net/projects/stdlib/ http://luaforge.net/projects/lrexlib/ ここら辺とか使ってみたらどうよ。
887 :
デフォルトの名無しさん :2006/10/07(土) 21:59:00
VC++6.0上で開発しているアプリからLua5.1ライブラリ経由でLuaファイルを呼び出そう としているのですが、標準関数を使えるようにするところがトラブル続きで 上手くいかないです。経緯を晒しますのでアドバイスを頂ければ幸いです。 1.luaopen_io(L)が死ぬ→ぐぐったらluaL_openlibs(L)発見。 2.luaL_openlibs(L)も死ぬ→調べたら内部でluaopen_io(L)呼び出してる。 3.マニュアル見たらluaopen_*は使えないと書いてある。 7.3 - Changes in the API ・通常のC機能のように、直接(ライブラリを開くために)luaopen_* 関数を呼ぶことができません。 Lua機能のように、Luaを通してそれらを呼ばなければなりません。 >Lua機能のように、Luaを通してそれらを呼ばなければなりません。 さて、これってどういうことなんでしょうか。lua_callを使って呼べってことですか? でもLuaに標準ライブラリをロードするための関数なんてありました? 追伸:ちなみにLua5.0.2を使おうとしたら stlport_vc6_static.lib が無いとか怒られました。 ・・・諦めて素直にLua4.0を使っていたほうがいいんでしょうか(´∀`;)
>>296 Lua for Delphiが消えてるけどまだダウンロードする方法ある?
889 :
887 :2006/10/07(土) 22:46:00
Lua.exe で require("math") が通ったので、もしや!と思って試してみましたが、 結果は以下の通りでした。だめぽ。。。 lua_pushstring(L, "require"); lua_gettable(L, LUA_GLOBALSINDEX); lua_pushstring(L, "math"); lua_call(L, 1, 1); ↓ PANIC: unprotected error in call to Lua API (attempt to call a nil value) 超訳:そんな関数無いです。。。(nil値にしか見えませんが何か?) lua_pushstring(L, "dofile"); lua_gettable(L, LUA_GLOBALSINDEX); lua_pushstring(L, "math"); lua_call(L, 1, 1); ↓ PANIC: unprotected error in call to Lua API (cannot open math: No such file or directory) 超訳:"math"なんてファイルありませんよ。ファンタジーやメルヒェンじゃないんですから。
890 :
885 :2006/10/07(土) 23:54:18
>>886 ありがとうございます。
リファレンスを見たときは正規表現と似た感じだったの読み飛ばしてました。orz
何故標準で正規表現が使えないのか気になって調べてみたところ、次のものが見つかりました。
> Lua does not use POSIX regular expressions (regexp) for pattern matching.
> The main reason for this is size:
> A typical implementation of POSIX regexp takes more than 4,000 lines of code.
> This is bigger than all Lua standard libraries together.
http://www.lua.org/pil/20.1.html
891 :
デフォルトの名無しさん :2006/10/08(日) 09:05:51
>887 lua_pushcfunction(L, luaopen_base); lua_call(L, 0, 0);
892 :
887 :2006/10/08(日) 09:41:13
多次元配列の読み書きがしたいんだが ROもFarcryも key=value という形式で 全然役に立たないんだが・・・
何を言いたいのかよく分かりません
Roのホムンクルス記述のLuaも FarCryのLuaも table[key]=valu みたいな形式なので table[key1][key2]=value みたいな形式を使いたいので参考にならないと言いたかった
テーブルを入れ子にすればいいだけでは?
Perlみたいに代入時に勝手に入れ子のテーブルを用意してくれるモードが 欲しいってことかな?
>>895 お前それを、突然893のように書いて理解してくれる人が出ると思ったのか?
893なんだし理不尽は当たり前
インデクスのアクセスできる範囲しか 返してくれないんだよな だから table[a][b][c][d][e] みたいなテーブルだと pairsとかnext使っても全要素取得出来ないし・・・
ネストすればよいだけでは?
これCとのやり取りがスタック方式というのがいいっすね。 変にポインタでだらだらやるよりずっといい。 柔軟で分かりやすい。グレイト!
Squirrelはうーん・・・何かLuaが文系でこれは理系という感じ。 Luaの、一般人がスクリプトを弄るということを想定してる点を無視しているイメージ。 ゲーム用とかでプログラマしかスクリプトを弄らないならこれでもよいのだろうけど。 クラスとかコンテニューとか例外処理とか、素人はよう使いこなさんからねどうせ。
素人が使いこなさないから無いってのはバカ意見だな
もちろん俺はあった方がいいよw けどなくても何とかなるという意味だよ
オブジェクト指向は、プログラマーでも使えない奴が結構いるからなぁ。 そういう奴はプログラマーやめればいいのに。
>>902 マジで言ってるのか?
t.foo("aaa", 10, f.bar)
このLuaで書かれたプログラムと同等のことを
CのAPIでさっと書ける?
それで書かれたのを瞬時に判断できる?
902じゃないけどそれをPerlAPIでやるよかましなんじゃない?
>>902 はぁ?コイツどんなだけ頭いいんだよ?
スタック操作がサクッっとかけるなんて、コンピュータ人間?
慣れればサクッと書けるよ やりづらいって言ってる人はまだ本格的に使ってないだけじゃないの?
多次元テーブルの全要素にアクセスしたいんだがなぁ・・・ 再帰呼び出し使えばいいのかな?
>>910 だから、試しに書いてみてって
t.foo("aaa", 10, f.bar)
lua_pushstring(L, "t"); lua_pushstring(L, "foo"); lua_gettable(L, -2); lua_pushstring(L, "aaa"); lua_pushnumber(L, 10); lua_pushstring(L, "f"); lua_pushstring(L, "bar"); lua_gettable(L, -2); lua_pcall(L, 3, LUA_MULTRET, 0);
lua_pushstring(L, "f"); lua_gettable(L, LUA_GLOBALSINDEX); lua_pushstring(L, "t"); lua_gettable(L, LUA_GLOBALSINDEX); lua_pushstring(L, "foo"); lua_gettable(L, -2); lua_pushstring(L, "aaa"); lua_pushnumber(L, 10); lua_pushstring(L, "bar"); lua_gettable(L, -6); lua_call(L, 3, 0); lua_pop(L, 2);
ありゃ被った
のようだね。 >lua_pushstring(L, "f"); >lua_pushstring(L, "bar"); >lua_gettable(L, -2); だとfまで引数にされないかい? 当方Perlしかembedしたことないんでよくわからん。
lua_gettableしてるからf.barの値が3番目の引数としてスタックに詰まれます
>>919 お前は自分の出した問題の答えが分かってないだけだろ
>>918 そうなのか。どもども。
ドキュメントさらっと読んでやってみたけどPerlよか断然楽だな。
Perlだとstashだのblessだのがめんどくさいし、
SV*だのAV*だの使っていじるのでコードが汚くなる。
関数呼び出し一つでこれだ。 915を何個も書かないとならなくなったら気が狂うよ。 luabind等を使わずに本当にスタックでやり取りしてる奴いるの?
結局はスタックを使いこなせないからスタックに切れているだけだと思われる
>>912 間違ってたらごめん
function each(t)
local function e(t)
local k, v = next(t)
while k do
if (type(v) == "table") then
e(v)
else
coroutine.yield(v)
end
k, v = next(t, k)
end
end
local co = coroutine.create(e)
return function ()
local f, s = coroutine.resume(co, t)
return s
end
end
local tbl, v = {{{1, 2},{3, 4}},{{5, 6},{{7, 8},{9, 10}}}}
for v in each(tbl) do
print(v)
end
情報処理技術者持ってる奴ならスタック余裕なのね 逆にluabindなんて使ってる奴が少数だろ
使いこなせない方が幸せだと思う
変にラッパー使っちゃうと後で困ること多いしな
>>919 もともとマシン語使いだったんで違和感ないです
ソフ開持ってるけど、こんなスタック弄りたくねぇよ。 なんで楽するためにLua使ってるのに、 その境界でアセンブラのようなメンドクサイ操作をしなきゃなんないの。 本当に近代のプログラマ?
>>931 さっきから文末に句点つけてるの俺とお前だけってバレバレなんですけよ^^;
こんなもなにもスタックってこういうものだと思うのですが・・・ 逆に、無理のないかなり練られた仕様だと思いますよ。
「けよ」じゃない「けど」だw
>926 なるほど、コルーチン使えば簡潔に書けるのか。 俺も似たようなことをやってみたから貼ってみる。 function rnext(t, keys) local k, v if keys == nil then k, v = next(t, nil) keys = { v = k, next = nil } elseif keys.next == nil then k, v = next(t, keys.v) keys.v = k else k, v = rnext(t[keys.v], keys.next) if k == nil then k, v = next(t, keys.v) keys = {v = k, next = nil } end end if k == nil then return nil elseif type(v) == 'table' then local ks ks, v = rnext(v, nil) keys.next = ks end return keys, v end
つづき。こう使う。 function rpairs(t) return rnext, t, nil end function viewList(l, sep) while l do result = result .. l.v .. sep l = l.next end return result end local a = {'a', {'b', 'c', {'d', e = 'f', 'g'}}, 'h', 'i'} for i, v in rpairs(a) do print(viewList(i), v) end 長いなあ。
luaopen_xxxx を直接呼んじゃうとメインから戻ってきたときのスタックの状態に影響が出るんだね
HPの電卓とかμPlan VMとかFORTHとか知らない人にはワケワカランかもな。
スタック理解できない奴がプログラマになれるわけないっすよ
スタックが理解できるかどうかは、問題にしていない。 スタック操作主体だと使いにくいとか、面倒だと言う話
理解できれば使いにくくも面倒でもないよ
第一、使う側からしたら、 lua = new Lua("hoge.lua"); a = lua.Integer["hoge"]; とかで、いいじゃん。 なんで、利便性のために、組み込み言語を使っているのに、 わざわざ面倒なスタックいじる必要があるのか理解に苦しむんだよね。
オブジェクト指向かよ
>936の補足。 viewList をちょっと変えようと思ってた途中をそのまんまにしてしまった。 local result = '' と、 sep = sep or ' ' を入れないとエラーになります。 あと、 926 の each は、 return coroutine.wrap(e) で良い。
あのね、型に厳しいスタンダードCと、型に緩やかなスクリプト言語のインターフェィスをどうするか となったらポインタ多用型にするかスタック型にするかしかなくね? テーブルが絡んできたらどっちもどっちだと思うが。
多くはLuaのためにCで補助関数を作るだけで スタック操作は引数の取得と戻り値の設定だけだから そんな大変じゃないような
Luaがスタック型を採用していることに文句があるわけじゃなく スタック型が分かりやすい使いやすいってのは嘘だってこった。
苦しそうだな
また意味不明だな。最初からそう言ってる。
スタックも使えないでプログラマ気取りすか・・・
俺の気持ちを嘘だといわれても困るのですが・・・・
Cしか知らなくてポインタが使えない言語もあること知らないだけだろ。
あれだな、Luaを導入する人の開発記を見てると 「スタック使いにくい」と言って独自のラッパーを作る香具師が多い。 ただその後「スタック簡単じゃんラッパいらんな」とAPI直接使うようになる香具師と スタック使いにくいと言い続ける香具師に別れる。
・「スタック簡単じゃんラッパいらんな」とAPI直接使うようになる香具師 ・スタック使いにくいと言い続ける香具師 の例を頼む というか、お前今の時代に「香具師」って・・・ その超おっさん感をなんとかしろ。
別にどっちが良い悪いなんて言ってないよ。 全部自分への悪口に見えるのかい?
ラッパよりも、#defineで定義した俺様マクロに心引かれる俺様が来ましたよ。
つまり、MFC使いやすい!嘘つけ!という議論ですね!
C/C++から簡単に読めるように、設定ファイル用途のLuaを呼び出した後、 設定ファイル前処理用Luaを呼び出すのが正解。 スタックが面倒なら、Luaでやれることは全部Luaにやらせようぜ。
962が禿しく正論
自分の好きに使えばいいじゃん。
テーブルの挙動がわからん Struct={} file_read(Struct,"data.txt") function file_read(table,file_name) local get_buf="" local k=1 local key=0 local v=0 local file_num file_num=_FOPEN(file_name,"r") while get_buf==nil do _FGETS(file_num,get_buf) for key,v in string.gfind(get_buf, "([%w]+)=([-]?[%w]+)") do table[k][tonumber(key)]=tonumber(v) end k=k+1 end _FCLOSE(file_num) end 読み込むデータ [1]:{[0]=2,[1]=2,[2]=8,[3]=17,[4]=10} [2]:{[0]=3,[1]=3,[2]=2,[3]=7,[4]=100} [3]:{[0]=4,[1]=4,[2]=41,[3]=7,[4]=50} [4]:{[0]=5,[1]=5,[2]=40,[3]=7,[4]=10} [5]:{[0]=6,[1]=6,[2]=42,[3]=7,[4]=30} [6]:{[0]=1,[1]=1,[2]=41,[3]=7,[4]=30} 何か俺間違えてる?
>935 を繰り返しを使ったコードで書き直してみた。ちょっとごちゃごちゃしているけど。 function rnext2(t, keys) keys = keys or {} local k, v local ks, c = {t}, (#keys > 1) and #keys or 1 for i = 2, c do ks[i] = ks[i-1][keys[i-1]] end k, v = next(ks[c], keys[c]) while (k == nil) and (c > 1) do ks[c], keys[c], c = nil, nil, c-1 k, v = next(ks[c], keys[c]) end if k == nil then return nil end keys[c] = k while type(v) == 'table' do k, v = next(v, nil) keys[#keys+1] = k end return keys, v end 935 だと keys は連結リストだが、こっちは1つのテーブルを配列っぽく使ってる。
io.readとか使ってデータを読み込むとなると一行ずつだが dofileでチャンクごと読み込むと楽だよな dofileで読み込むとglobalになるから好ましくないんだっけ?
globalを汚さないdofileはこんな感じで良いのかな? function envdofile(filename) local c = loadfile(filename) local e = {} local m = getmetatable(e) or {} m.__index = getfenv(c) or _G setmetatable(e, m) setfenv(c, e) return e, c() end 使い方 -- a.lua c = envdofile("b.lua") print(b) -- nil print(c.b) -- 10 -- b.lua b = 10 print(b) -- 10
HSPに愛想が尽きたのでLuaでゲームを作りたいです。 LuaGLの存在は知っていますが、LuaからGLUTを呼ぶためのライブラリは既にありますか? むしろ作るべきですか?
lua-users wikiに作りかけのがあったはず。
LuaScene
Google code search
とりあえず io.readAll io.writeAll io.readCSV io.writeCSV io.readTab io.writeTab table.marge table.unmarge table.dump table.save table.load stack.dump があったら便利だと思った。
だいたい半分くらい書き終わりました。
テーブルに値を入れるのに入れ子にすると大変だから ["document"]["body"]["color"]=256 ↓ ["document:body:color"]=256 みたいにすればファイルへのセーブ・ファイルからのロードも楽になるが・・・
オマエ・チョット・アホ・デス・カァ
977 :
デフォルトの名無しさん :2006/10/12(木) 21:07:16
ヒント: document.body.color=256
print((string.gsub(string.gsub(--[[Lua5.1用table.dump関数を出力]] [[ table._dump_temp = nil#function lua_table_dump(src, i)# if src == nil@ then return nil end# if i == nil or type(i) == "string" then --"i" i@ s `tag' on top level call# if i == nil then i = "t" end# if type@ (src)=="table" then# table._dump_temp = i .. "={\n"# lua_tab@ le_dump(src, 1)# table._dump_temp = table._dump_temp .. "}\n"# @ local result = table._dump_temp# table._dump_temp = nil# @ return result# else# return nil --illegal arguments# end# @ else --"i" is indent on recursive call# local dst = {}# local in@ dent = string.rep(" ", i)# for k,v in pairs(src) do# if type(@ k) == "number" then k = "[" .. k .. "]" end# if v==table._dump_te@ mp then# --do nothing# elseif type(v)=="table" then# @ table._dump_temp = table._dump_temp .. indent .. k .. "={\n"# @ i = i + 1# lua_table_dump(v,i)# table._dump_temp = tabl@ e._dump_temp .. indent .. "},\n"# elseif type(v)=="string" then# @ table._dump_temp = table._dump_temp .. indent .. k .. "=\"" .. @ v .. "\",\n"# else# table._dump_temp = table._dump_temp ..@ indent .. k .. "=" .. tostring(v) .. ",\n"# end# end# end#end#@ table.dump = lua_table_dump#]],"@\n",""),"#","\n")))
979 :
978 :2006/10/12(木) 23:35:18
えーと、
>>978 をLua5.1のLua.exeに食わせるとコードを吐きます。
ちょっと1レスに収まりきらなかったので・・・。
使い方はこんな感じです。
a = {A="A",B={b="b","d"},42} --複雑なテーブル
dump = table.dump(a, "a")
print(dump)
--(ここで dump を save.txt に保存したと仮定)
a = nil
dofile("save.txt") --読み込み
print(table.dump(a, "a"))
変なとこあったら教えてください。
コードを見てないからなんなんだが、 a = {A='a'} a.next = a みたいな循環構造のテーブルを渡した場合はどうしてる?
981 :
978 :2006/10/13(金) 07:46:15
>>980 (((( ;゚Д゚)))ガクガクブルブル
>>926 ,935 も循環参照は考えてなさそうだな。
try-catch構文(もどき) exception=setmetatable({throw=error},{__newindex= function(t,k,v)if k=="catch"then xpcall(t.try,v) else rawset(t,k,v)end end}) exception.try =function() print("foo") exception.throw("(^^)") print("bar") end function exception.catch(err) print("error : "..err) end
finallyもぜひ
>>983 考えてみると循環参照やら function、thread、userdata の復元やら、テーブルのシリアライズには
色々と問題がありますね・・・。あと、循環参照でなくても
d = { A="A" }
t = { d, d }
とかいう構造だと、
t = { [1]={ A="A" }, [2]={ A="A" } }
とは等価ではなく、
do
local d001 = { A="A" }
t = { [1]=d001, [2]=d001 }
end
みたいにダンプしてあげないと復元できないし・・・。
987 :
デフォルトの名無しさん :2006/10/13(金) 22:42:29
12.1.2のって NIL BOOLEAN FUNCTION USERDATA LIGHTUSERDATA THREAD の場合はどうしてるんだ? 文字列に変換出来るのだろうか?
926 のを循環参照に対応させてみた。 function each(t) local cache = {} local function e(t) cache[t] = true local k, v = next(t) while k do if cache[v] then elseif type(v) == "table" then e(v) else coroutine.yield(v) end k, v = next(t, k) end end return coroutine.wrap(e), t end いちおう動いてるっぽい。
>>988 error("cannot save a " .. type(value))
だと思う。
schemeと似てるな
順序が不定だと困る場面がありそうなので、キー順に巡回する spairs 関数を書いてみた。 使い方は Using: の行を参照。 t={A="a", B="b", [1]="c", [2]="d"} などの文字列数字混在でも可。 --compare many types (over spec...) function table_lt_event(op1, op2) local type1, type2 = type(op1), type(op2) if type1 ~= type2 then --cmp type return type1 < type2 elseif type1 == "number" and type2 == "number" or type1 == "string" and type2 == "string" then return op1 < op2 --default elseif type1 == "boolean" and type2 == "boolean" then return op1 == true else return tostring(op1) < tostring(op2) --cmp address end end (続く)
993 :
992 :2006/10/14(土) 10:10:14
(続き) --sorted keys -- Using: for i, k in pairs(table.keys(t)) do ... end function lua_table_keys(t) local keys = {} for k in pairs(t) do table.insert(keys, k) end table.sort(keys, table_lt_event) return keys end --sorted pairs -- Using: for k, v in spairs(t) do ... end function lua_table_spairs(t) local k = {} local function e(t) for i, v in pairs(lua_table_keys(t)) do coroutine.yield(v, t[v]) end end return coroutine.wrap(e), t end table.keys = lua_table_keys spairs = lua_table_spairs -- or table.spairs = lua_table_spairs
994 :
984 :2006/10/14(土) 10:54:05
finallyにも対応したつもり ただしtry-catch-finallyとつなげることはできない exception=setmetatable({throw=error},{__newindex= function(t,k,v)if k=="catch"then xpcall(t.try,v) elseif k=="finally"then(function(e,m,...)v(e,m, ...)if not e then error(m,0)end end)(pcall(t.try)) else rawset(t,k,v)end end}) exception.try =function() exception.throw("hogehoge") end exception.finally =function() print("finally") end
つなげられなくても try try catch end finally end とできれば問題ないっす
2.5より前のPython方式ですな。
>>995 994のコードを見る限り、それは不可能だぞ。
998 :
984 :2006/10/14(土) 12:27:01
これでどうだ? exception=setmetatable({throw=error},{__newindex= function(t,k,v)if k=="catch"then xpcall(t.try,v) elseif k=="finally"then local m,e e=xpcall(t.try, function(e)m=e v(false,e)end)if e then v(true) else error(m,0)end else rawset(t,k,v)end end})
ところで次スレは?
1000 :
デフォルトの名無しさん :2006/10/14(土) 13:06:30
1000げと
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。