トップページtech
1001コメント297KB

プログラミング言語 Lua  その3

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん2006/10/14(土) 13:13:52
だれか サポ−ト 頼む。
前々スレ http://pc5.2ch.net/tech/kako/1034/10341/1034182349.html
前スレ http://pc8.2ch.net/test/read.cgi/tech/1063711237/
本家 http://www.lua.org/
lua-users http://lua-users.org/
LuaForge http://luaforge.net/
Lua 5.1 リファレンスマニュアル(日本語訳)
http://sugarpot.sakura.ne.jp/yuno/html/lua51_manual_ja.html
0910デフォルトの名無しさん2008/03/05(水) 01:08:52
LuaのインクリメンタルMark&Sweepの実装も
マジックナンバーばっかで何を根拠に調整してんのか
よくわからんしなぁ。
0911デフォルトの名無しさん2008/03/05(水) 08:12:59
>>909
うん、だから何度もいってるように「俺の好みだからほっとけ」といわれれば何もいうことはないよ。
「実行速度は遅くてもいい」って人には参照カウント式で十分なわけだから。
それでは十分じゃないって人が多いから議論になるわけで。
0912デフォルトの名無しさん2008/03/05(水) 08:24:51
GCの話は、以下、>>907のスレで
0913デフォルトの名無しさん2008/03/05(水) 11:43:39
じゃあLuaEditの話を聞かせてください
0914デフォルトの名無しさん2008/03/05(水) 16:16:32
>>908
dクス
でも結局一般的な型以外は全部C++のオブジェ
クトと仮定することにしたよ。SqPlusがこの方式
を採用してない理由はなにか問題があるんだろうか…
実際運用してみないと分からないか。

>>911
リファレンスカウント&マークスイープGCのハイブ
リット型って言うほど実行速度遅いの?
今妄想してる組み込み向け言語ではリファレンスカ
ウント採用しようかと思ってるんだが(´Д`;)

Flashでゲーム作ったことあるんだけど、GCで止まる
のは心臓に悪かった。それとBitmapDataが必要なく
なったら明示的に破棄しないといけないのがGC言語
なのになんでさ?って思った。

って経験からリファレンスカウント式を採用しようと
思ったわけなんだが…

>>912
一般GCじゃなくて組み込み言語のGCの話題だし
ここでいいんでない
0915デフォルトの名無しさん2008/03/05(水) 18:30:46
リファレンスカウント&マークスイープが遅いか? なんてのが組み込み言語固有の話とはとても思えない。
明らかにGC一般の話だろ。
0916デフォルトの名無しさん2008/03/05(水) 20:00:37
そんくらい許してやれよ
0917デフォルトの名無しさん2008/03/05(水) 20:54:49
GCの話はいいけど、LuaのGCとSquirrelのGCのどっちが優れているか
って話にすりかえるのがまずいんですよ。
ダメといわれた言語使ってる人が不愉快でしょ。
組込み向け言語全般で共有してるスレなんだから、
各言語の優劣とかの議論に結びつく話は自重する方向で行こうよ。
0918デフォルトの名無しさん2008/03/05(水) 20:59:07
じゃあLuaEditの話を聞かせてください
0919デフォルトの名無しさん2008/03/05(水) 23:31:21
LuaEditは5.0用とトップページにあったので何となく止めたな
カラーリングだけなら他のエディタでもできるし
0920デフォルトの名無しさん2008/03/06(木) 08:26:41
話は変わるけど初期値与えてLUA実行するのってどうすれば良いの?
一回実行させた後にスタック弄って値与えるとか?
初期値与える物と与えない物がある、ついでに変数名は変わるんで
引数として値を与える以外の方法でお願い

具体的に言うとRigidChipsのLUAの挙動を再現したい
0921デフォルトの名無しさん2008/03/06(木) 11:40:46
すみません、Squirrel覚えたてなのですが、
Squirrel内にあるデータ構造をC++に渡すには
どのような方法がございますか?
0922デフォルトの名無しさん2008/03/06(木) 16:05:00
Squirrelですが、これで正常なんでしょうか?
なんか納得いかない。

class abc {
v = 0;
};
local a = abc();
local b = abc();
a.v = 1;
b.v = 2;
a = b;
b.v = 3;
print("a = "+ a.v + "\n");
で出力
a = 3
0923デフォルトの名無しさん2008/03/06(木) 16:37:26
squirrel では変数は全部参照なのでそれで正しい。
0924デフォルトの名無しさん2008/03/06(木) 17:29:59
>>923
レスありがとうございます。
なるほど、そうするとホスト側でメタメソッドとかで下手にいじらないほうがよさそうですねぇ。
0925デフォルトの名無しさん2008/03/06(木) 18:20:45
>>920
意味がわからないな。たとえば始めにbarに5をセットしても
プログラム内部にbar=0と書いてあればそこでクリアされてしまう
"初期値を設定"と"挙動を再現"とは絶対無関係でしょ
挙動を再現するならゲームでいうセーブロードの処理を自分で
組み込んで、必要ならセーブデータ改変するとかじゃないか
0926デフォルトの名無しさん2008/03/06(木) 19:53:21
>>925
RigidChips用のスクリプトがこんな感じ(LUAの言語仕様おかしいかもしれないが気にしないでくれ)
val{
a (max=10,min=-10,default=0)
}
lua{
if _key(0)==1 begin a=a+1 end
if _key(1)==1 begin a=a-1 end
}
って感じなんだが
aの初期値を与えてないと値なくてエラー起きるってのをどうにかしたい
(プログラムでvalの部分一度解析させてLUAのファイルに落とし込み実行して
グローバル変数として宣言させるとかだろうか?
0927デフォルトの名無しさん2008/03/06(木) 20:32:35
日本語話せ。
何が分からなくて、何がしたいのかさっぱりわからない。
0928デフォルトの名無しさん2008/03/06(木) 20:44:49
分らない 初期値を与え方
したいこと 初期値を与えたい

初期値であって引数じゃないのが問題
初期値はvalって部分で与えられてる
luaのプログラムは別に用意されてる(luaの中で変数宣言しない事もあるのでそのまま実行するとnilだ言われる)
0929デフォルトの名無しさん2008/03/06(木) 21:25:38
ホスト側でグローバルテーブルにてきとーに値突っ込んで
から実行すればいい話なんじゃねーの。
0930デフォルトの名無しさん2008/03/06(木) 21:32:49
_Gに__indexを定義したいってことかと思った
0931デフォルトの名無しさん2008/03/06(木) 21:39:31
それはValの部分つまりLuaじゃない部分の問題でしょ
それにRigid Chipsの ページ覗いたらlua内で用いる場合は
すべて大文字にするって書いてあるけどなんでAじゃないんだ?
0932デフォルトの名無しさん2008/03/06(木) 21:48:58
>>931
うろ覚えのまま、雰囲気だけ伝えようとガーっと書いてったもんで
大文字ってのも言われて思い出したぐらいでした

グローバルテーブルにてきとーに値の詰む方法調べてるんですが…
コンパイルとdofileだけしかまだ理解出来てないんで難しい…
とりあえず一歩前進した気がします。ありがとうございます。
0933デフォルトの名無しさん2008/03/06(木) 22:03:17
スクリプトを実行しないとLuaオブジェクトを操作できないという、根本的な勘違いが原因か。
RigidChips を例に出すから余計に混乱した。殆ど関係なかったな。

既に言われてるように、スクリプトを実行する前に、
変数に初期値を代入しておけばいいだけのことだよ。
まぁがんばれ。
0934デフォルトの名無しさん2008/03/06(木) 22:17:43
やっと意味分かったwww
最初にa=0って書けばいいのがわからなかったのか
それでも_key()がないっエラーでるだろうから頑張れ
0935デフォルトの名無しさん2008/03/06(木) 22:27:50
>>934
>最初にa=0って書けばいい
これkwsk。グローバルに詰むのを簡単に実現できるって事ですか?

_key()はCの関数を呼ぶ方法とか、そこらへんでやってる人がいるのでそれ参考にしてどうにかなりそうです
0936デフォルトの名無しさん2008/03/06(木) 22:30:39
RigidChipsはLua使わないスクリプトで弄ったことあるけど
ようは未初期化の変数触っててヤバイって話なのかな。
0937デフォルトの名無しさん2008/03/06(木) 22:32:39
そう言う話です。
もう少し…もう少しでRigidChipsのモデルを現実に引っ張り出せる…
0938デフォルトの名無しさん2008/03/06(木) 23:02:25
つまりLua{}の中身を 別のファイルに切り出してhoge.luaに保存
lua.exeでdofile("hoge.lua")したらaがnil だってエラーでたなら
hoge.luaの始めのあたりにa=0とでも書いとけっていってる
あまりに初歩的すぐるから次からもっと勉強してからおいでってこと
0939デフォルトの名無しさん2008/03/06(木) 23:39:28
その方法だとnilのエラー起きるはずのプログラムも通っちゃいますよね
(非常に稀に呼ばれるLUA内のサブルーチンでnilがあった時にエラーが出るはずがいきなりリセットが掛かりそのまま最初から?)
変数維持したままプログラムの再loadとかも出来るんでしょうか?

とりあえずリファレンスのテーブルとスタックの辺り読んだ感じだと
valで初期値が与えられている変数全部にlua_pushnumberとlua_setglobal適用してやれば良い気がしてるんですが…
0940デフォルトの名無しさん2008/03/07(金) 00:06:13
なぜ何もやらない内にまた質問する?
0941デフォルトの名無しさん2008/03/07(金) 00:18:51
その手段は良いような気がするけれども
言われた通りにやった方が楽ではないかという心理で

とりあえず原因不明のエラー\(^o^)/今日はもう寝て明日続きやってみます
0942デフォルトの名無しさん2008/03/07(金) 02:00:22
RigidChipsのチュートリを見ると

Val {
Handle(default=0,min=-20,max=20,step=5)
}
Key {
2:Handle(step=-0.5) //キー2(初期値←)が押されてる間handle-0.5
3:Handle(step=0.5) //キー3(初期値→)が押されてる間handle+0.5
}

こんなのが出てくるんだけど、これはいったいどうなってるんだろう?
Keyはテーブルではなさそうだし、luaではキーワード付き引数は使えないはず。
RigidChipsの内部で解析されてるんだろうか。
0943デフォルトの名無しさん2008/03/07(金) 04:06:47
>>942
lua{}ブロック内以外は、Luaとは無関係。
内部で解析されてる、で合ってる。
0944デフォルトの名無しさん2008/03/07(金) 08:54:42
で、次スレだが、スレタイどうする?
0945デフォルトの名無しさん2008/03/07(金) 09:20:15
>>243-246
0946デフォルトの名無しさん2008/03/07(金) 10:13:18
squirrelの話題がスレ違いじゃないようなスレタイに
0947デフォルトの名無しさん2008/03/07(金) 12:07:02
それはテンプレにでも書いとけば
0948デフォルトの名無しさん2008/03/07(金) 12:22:41
【Lua】組み込み言語統合【squirrel】
に一票。
0949デフォルトの名無しさん2008/03/07(金) 12:56:35
テンプレに「煽り、教えて君はスルーしましょう」に一票
0950デフォルトの名無しさん2008/03/07(金) 13:11:27
>>948
統合いらなくね?

【Lua】組み込み言語【squirrel】
0951デフォルトの名無しさん2008/03/07(金) 13:17:54
付けるんだとしたら統合じゃなくて「総合」だな
あと細かいがSquirrelのSは大文字で
0952デフォルトの名無しさん2008/03/07(金) 14:20:01
>>951
【Lua】組み込み言語総合【Squirrel】

に一票で。
0953デフォルトの名無しさん2008/03/07(金) 14:56:14
スレタイなんてどうでもいい

に一票
0954デフォルトの名無しさん2008/03/07(金) 15:43:15
一応スレからURL適当に拾ってテンプレ案作ってみた。
wikiあるんだからリンクあんま要らんかも。長いけど、まあ参考にして貰えれば。
Squirrelの話題も増えてたし、Luaじゃなくて組み込み全体のスレにするっていうのは可決でいいよね?
↓↓↓


LuaやSquirrelなど、組み込み用途で使われるプログラミング言語についてのスレッドです
まとめwiki(なにか質問する前に必ずみること!)
http://wikiwiki.jp/lua/

その他参考URLは>>2

■過去スレ
その3 http://pc11.2ch.net/test/read.cgi/tech/1160799232/ (前スレ)
その2 http://pc8.2ch.net/test/read.cgi/tech/1063711237/
その1 http://pc5.2ch.net/tech/kako/1034/10341/1034182349.html


■関連してるかもしれないスレ
【Perl,PHP】LLバトルロワイヤル【Ruby,Python】
http://pc11.2ch.net/test/read.cgi/tech/1188997302/

Io Language
http://pc11.2ch.net/test/read.cgi/tech/1201100624/

Garbage Collection (GC)について語るスレ
http://pc11.2ch.net/test/read.cgi/tech/1141646850/

各種ライブラリ紹介スレ2(ゲ制作)
http://pc11.2ch.net/test/read.cgi/gamedev/1177886529/
0955デフォルトの名無しさん2008/03/07(金) 15:43:37
参考URL
■Lua
ttp://www.lua.org/ (本家)
ttp://lua-users.org/ (lua-users)
ttp://luaforge.net/ (LuaForge)
ttp://sugarpot.sakura.ne.jp/yuno/html/lua51_manual_ja.html(5.1マニュアル和訳)


■Squirrel
ttp://www.squirrel-lang.org/ (本家)
ttp://sourceforge.net/projects/squirrel/
ttp://sourceforge.net/projects/sqplus/ (SqPlus)
ttp://sourceforge.net/projects/squirrelsh/ (Squirrel Shell)
ttp://wikiwiki.jp/lua/?Squirrel_Lang%2Ftoc(wiki内2.1マニュアル和訳)


■他、前スレに載ってた言語
The Pawn language(だれも使ってなさそうな、組み込み言語)
ttp://www.compuphase.com/pawn/pawn.htm

NullLogic Embedded Scripting Language
ttp://sourceforge.net/projects/nesla/

Xtal(ゲーム向け。スタックを意識しなくていい?)
ttp://d.hatena.ne.jp/xtalco/
ttp://code.google.com/p/xtal-language/
ttp://blog.livedoor.jp/dankogai/archives/50836939.html
0956デフォルトの名無しさん2008/03/07(金) 16:32:40
俺も
【Lua】組み込み言語総合【Squirrel】
に一票
0957デフォルトの名無しさん2008/03/07(金) 17:19:25
こちらも念の為用意してたテンプレを晒してみる。
リンクは同じものを省略した。まあ参考程度に。
>954の文章の方がすっきりしてていいな。
あと関連スレのLLとGCはなくてもいいんじゃね。

--
プログラム言語の処理系をアプリケーションに組み込む話と
それに適した言語についてのスレです。話題の中心はLuaと
Squirrelですが他の言語もこの趣旨に沿う範囲でOK。

関連スレ
 2 part forth
 http://pc11.2ch.net/test/read.cgi/tech/1073673931/
 ●●●●TCL/TKなら俺に聞け 2●●●●
 http://pc11.2ch.net/test/read.cgi/tech/1177998764/
 ECMAScript デス 3
 http://pc11.2ch.net/test/read.cgi/tech/1190160481/
 「コンパイラ・スクリプトエンジン」相談室12
 http://pc11.2ch.net/test/read.cgi/tech/1188688416/

参考URL
 Lua言語の紹介
 http://staff.aist.go.jp/yutaka.ueno/lua/docsjp.html
 入門Luaプログラミング
 http://www.amazon.co.jp/dp/4797342722/
0958デフォルトの名無しさん2008/03/07(金) 19:06:48
組み込み言語総合じゃなくて組み込み系言語総合の方がいい
0959デフォルトの名無しさん2008/03/07(金) 20:17:18
http://tgws.fromc.jp/wiki/lua/
ここは?目的別が初級者向けな気がするけど
0960デフォルトの名無しさん2008/03/07(金) 22:56:10
悲しいWikiだな
0961デフォルトの名無しさん2008/03/08(土) 08:37:38
>>956
に一票
0962デフォルトの名無しさん2008/03/08(土) 09:37:35
関連スレにガベコレスレも
http://pc11.2ch.net/test/read.cgi/tech/1141646850/
0963デフォルトの名無しさん2008/03/08(土) 11:29:36
>>954には入ってる
09649622008/03/08(土) 20:28:56
失礼しました m(_ _)m 見落としてたようです
0965デフォルトの名無しさん2008/03/08(土) 23:20:20
>>962
>957は要らないと書いているので要るという意見がでるのは重要。

ところで>954と>957は微妙に意味は違うが>954でまとまるのかな。
954ならアプリケーションの言葉を入れて欲しい。
↓↓↓
LuaやSquirrelなどアプリケーションへの組み込み用途で
使われるプログラミング言語についてのスレッドです
0966デフォルトの名無しさん2008/03/08(土) 23:31:14
かなりの悪文だな。
0967デフォルトの名無しさん2008/03/09(日) 01:07:36
> LuaやSquirrelなどアプリケーションへの組み込み用途で
> 使われるプログラミング言語についてのスレッドです

よいと思います
0968デフォルトの名無しさん2008/03/09(日) 06:43:36
よいっすね
0969デフォルトの名無しさん2008/03/10(月) 05:02:23
とりあえず、ファイル入力教えて
CVSのでーたってかんたんによみこめるの?
0970デフォルトの名無しさん2008/03/10(月) 06:14:45
>>969
うん、簡単。
checkoutでリポジトリから読み込んで手元にコピーができるよ。
0971デフォルトの名無しさん2008/03/10(月) 11:07:51
CSVを間違えてないか、と
0972デフォルトの名無しさん2008/03/10(月) 14:29:17
CVSって書いてんじゃん。俺はsvnだけどな。
0973デフォルトの名無しさん2008/03/10(月) 19:30:29
>>972
ファイル入力って書いてあるじゃん。
0974デフォルトの名無しさん2008/03/10(月) 19:44:33
>>973
でーたってかんたんって書いてあるじゃん。
0975デフォルトの名無しさん2008/03/10(月) 21:53:21
聞いてる方は聞き方が悪いが
答えてる方は意地が悪いな
0976デフォルトの名無しさん2008/03/10(月) 22:12:27
そんなこと書き込む暇があったら、
お前が教えてあげればいいだけなのにな
0977デフォルトの名無しさん2008/03/10(月) 22:48:41
教えるとこうなるからじゃね→ while true do oshiete() end
0978デフォルトの名無しさん2008/03/10(月) 22:53:55
かんたんに出来るとか言ってるやつがいるんだから、そいつが解決してくれるだろ
俺たちはその回答を待っててやればいいのさ
0979デフォルトの名無しさん2008/03/10(月) 23:42:53
つまりLuaかSuirrelでCVSクライアントを作るってこと?
0980デフォルトの名無しさん2008/03/10(月) 23:44:54
LuaってCSVファイルの読み込みすら簡単にできないんだ。
糞だな。
0981デフォルトの名無しさん2008/03/10(月) 23:48:59
よかったね♪
0982デフォルトの名無しさん2008/03/11(火) 00:25:05
組み込み言語なんだぞ
0983デフォルトの名無しさん2008/03/11(火) 01:05:35
標準出力すらライブラリ扱いDA☆ZE
0984デフォルトの名無しさん2008/03/11(火) 08:01:48
>>980
エクセルでもつかえよ
0985デフォルトの名無しさん2008/03/11(火) 13:07:09
少し早い気もしますが980超えたので次スレ立てますた。

【Lua】組み込み系言語総合【Squirrel】
http://pc11.2ch.net/test/read.cgi/tech/1205208141/
0986デフォルトの名無しさん2008/03/11(火) 16:07:02
0987デフォルトの名無しさん2008/03/11(火) 17:14:07
0988デフォルトの名無しさん2008/03/11(火) 17:46:51
じゃあおれも乙
0989デフォルトの名無しさん2008/03/11(火) 20:23:19
LuaのGCはマーク&スィープをさらに組み込み向けに改良したインクリメンタル方式なのであった!
0990デフォルトの名無しさん2008/03/11(火) 20:38:07
>>980
CSVファイル専用の関数が標準であるわけではないので、
「関数一つで簡単に解析できる」という意味ならたしかに簡単じゃない。
ただ正規表現は標準であるし、難易度はsquirrelやxtalなんかの他のスクリプト言語と変わらんぞ。

>>983
もともと組み込みや設定ファイル用に作られた言語なので、標準出力は当然ライブラリ扱い。
これはバイナリサイズを小さく保つことに貢献しているともいえるな。
0991デフォルトの名無しさん2008/03/11(火) 21:14:13
>>990
煽りに冷静に返すその姿に萌え
0992デフォルトの名無しさん2008/03/11(火) 21:32:04
冷静だな
俺も萌えた
0993デフォルトの名無しさん2008/03/11(火) 21:35:52
990になら掘られてもいい
0994デフォルトの名無しさん2008/03/11(火) 23:21:56
function read_csv(f)
..local ls={}
..local ti=table.insert
..for l in io.lines(f) do
....local function sep(l)
....local ws={}
....for w in l:gmatch"([^,]*),?" do ti(ws,w) end
....return ws end
....ti(ls,sep(l))
..end
return ls end
0995デフォルトの名無しさん2008/03/11(火) 23:24:11
まあ難しくはないけど、エディタで{}つけてそのまま読んだ方が早い気がする
0996デフォルトの名無しさん2008/03/11(火) 23:36:26
中身が全部数値ならそれでも良いんだろうけど、
Excelの出力したcsvで数値以外のが混じってる場合だと問題起きそう。
"とか改行の入った文字列とかで。
0997デフォルトの名無しさん2008/03/12(水) 01:15:34
ゆ、ゆ、ゆ・・・
0998デフォルトの名無しさん2008/03/12(水) 01:17:31
  _____________
 /::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::/
/:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::/
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
0999デフォルトの名無しさん2008/03/12(水) 01:17:54
          __   _____   ______
         ,´ _,, '-´ ̄ ̄`-ゝ 、_ イ、
        'r ´          ヽ、ン、
      _,'==─-      -─==', i__
     /::::::i イ iゝ、イ人レ/_ルヽイ i |:::::::/
    /:::::::::レリイi (ヒ_]     ヒ_ン ).| .|、i .||:::::/
     ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
                __   _____   ______
               ,´ _,, '-´ ̄ ̄`-ゝ 、_ イ、
              'r ´          ヽ、ン、
              ,'==─-      -─==', i
              i イ iゝ、イ人レ/_ルヽイ i |
            _レリイi (ヒ_]     ヒ_ン ).| .|、i .||__
           /:::::::::!Y!""  ,___,   "" 「 !ノ i |:::::::/
          /::::::::::::(L.',.   ヽ _ン    L」 ノ| .|::::/
           ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
1000デフォルトの名無しさん2008/03/12(水) 01:18:16
                        __   _____   ______
                        ,´ _,, '-´ ̄ ̄`-ゝ 、_ イ、
                       'r ´          ヽ、ン、
_人人人人人人人人人人人人_ ,'==─-      -─==', i
> ゆっくりしていってね!!!< i イ iゝ、イ人レ/_ルヽイ i |
 ̄^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄ レリイi (ヒ_]     ヒ_ン ).| .|、i .||
                     _!Y!""  ,___,   "" 「 !ノ i | __
                    /::::: (L.',.   ヽ _ン    L」 ノ| .|:::::::/
                   /:::::::: | ||ヽ、       ,イ| ||イ| /::::::::/
                    ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。