プログラミング言語 Lua その3
■ このスレッドは過去ログ倉庫に格納されています
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
0710デフォルトの名無しさん
2008/01/14(月) 13:40:53Lua だとこんな。
> f = (function ()
local v = 0
return function ()
v = v + 1
return v
end
end)()
> print(v)
nil
> print(f())
1
> print(f())
2
> print(f())
3
> print(v)
nil
0711デフォルトの名無しさん
2008/01/14(月) 14:19:30ttp://muffin.cias.osakafu-u.ac.jp/~matumoto/cgi-bin/xt.cgi?prog/squirrel_lang
ここに静的変数について説明があるけど、これじゃ駄目なのか?
0712デフォルトの名無しさん
2008/01/14(月) 15:47:49>>710
真似てみて以下のようなコードを書きましたが、
実行時しても、111が出力されました。
function func()
{
v <- 0;
return function() {
return ++v;
}();
}
print(func());
print(func());
print(func());
>>711
クラスのメンバ変数でしか使えなく、さらに書き換えが無理なので、使い勝手が悪そうです。
0713デフォルトの名無しさん
2008/01/14(月) 16:12:55{ local v = 0; function count() { return ++v; }}
こんな感じのことがしたいのかな。Luaなら
do local v = 0; function count() v = v + 1; return v; end; end
0714デフォルトの名無しさん
2008/01/14(月) 16:14:01インスタンスを作成すると、そのクラスのスロットの追加変更が効かなくなるってのは
仕様として分かるんだが、静的メンバまで変更不可になるのはどうにかしてしてほしい。
0715デフォルトの名無しさん
2008/01/14(月) 16:19:38vの初期化がfunc呼出し毎に毎回起こってないかな。
外側のfunctionを適用した結果のreturn function...のfunctionがfuncの値になるんよ。
0716デフォルトの名無しさん
2008/01/14(月) 16:24:310717709
2008/01/14(月) 16:31:53以下のように書き直してみたところうまく動きました。
local v = 0; では駄目で v <- 0; にする必要があるみたいです。
動作原理がいまいちわかっていないので詳しく追ってみます。
local f = (function() {
v <- 0;
return function() {return ++v;}
})();
print(f());
print(f());
print(f());
0718デフォルトの名無しさん
2008/01/14(月) 17:16:55それグローバル変数 v が確保されてるだけだよ
>>710 の例ぽいことは squirrel なら generator つかえば簡単にできるけど、
それはあくまで「その中に閉じた変数」であって、全体で共有される static 変数じゃない。
用途的にstatic なら、名前に気をつけつつグローバルにおくしかないはず。
0719デフォルトの名無しさん
2008/01/14(月) 18:07:210720デフォルトの名無しさん
2008/01/14(月) 18:11:450721デフォルトの名無しさん
2008/01/14(月) 18:58:14ノベルはある?
0722デフォルトの名無しさん
2008/01/14(月) 19:07:550723709
2008/01/14(月) 19:08:23> それグローバル変数 v が確保されてるだけだよ
<- はlocalをつけずに初期化するためだけのものだと思ってました。
もっと勉強しないと駄目ですね。
0724デフォルトの名無しさん
2008/01/14(月) 19:32:29そりゃ、Cぐらいにしかないからだろ。
あれば使うよ。
0725デフォルトの名無しさん
2008/01/14(月) 21:28:01> 同人ゲーム?
> ノベルはある?
あるはずなのは知ってるんだが具体名は知らなかったり...
0726デフォルトの名無しさん
2008/01/14(月) 21:30:38> 関数内の静的変数なんて、C言語使いしか使わん
オブジェクト指向言語のインスタンス変数は多用されるわけだが
0727デフォルトの名無しさん
2008/01/14(月) 21:53:52そうだよ。
何がいいたいの?
0728デフォルトの名無しさん
2008/01/14(月) 22:00:27Squirrelとなると皆無な余寒
0729デフォルトの名無しさん
2008/01/14(月) 22:00:42↑↓
あるメソッドとメンバがあってメンバ変数名がメソッドが属するオブジェクトにローカルである
こう?
0730デフォルトの名無しさん
2008/01/14(月) 22:13:550731デフォルトの名無しさん
2008/01/14(月) 22:24:46ありがとう。
0732デフォルトの名無しさん
2008/01/15(火) 12:17:55Alcotの「フェアチャイルド」方面にSquirrelの予感
使ってるのかどうか確信が持てないのだけどね
0733デフォルトの名無しさん
2008/01/15(火) 12:57:10>>616みたいなバグがまだどんだけ潜んでるか分からないし
0734デフォルトの名無しさん
2008/01/15(火) 13:35:040735デフォルトの名無しさん
2008/01/15(火) 13:39:150736685
2008/01/16(水) 12:52:20ぐぐってmakefileが見つかったけどうまくいかないんで、
tlib lua.lib /C +lapi.obj,lua.lst
tlib lua.lib /C +lauxlib.obj ,lua.lst
tlib lua.lib /C +lbaselib.obj ,lua.lst
(略)
と、luaのsrcすべての.objからmylua.lib作ったんですが、
>ilink32 c0x32.obj cw32.lib import32.lib mylua.lib test.obj
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
Error: 外部シンボル '_luaO_log2' が未解決(...\MYLUA.LIB|ltable が参照)
Error: 外部シンボル '_luaO_nilobject_' が未解決(...\MYLUA.LIB|ltm が参照)
(以下同様)
仕方ないのでgrepしてluaO_がlobject.hに見つかったので(あとturboFloatエラーも検索して)
>ilink32 c0x32.obj lobject.obj test.obj cw32.lib import32.lib mylua.lib
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
>c0x32.exe
8.000000desu
add.luaで3+5、とりあえずは出来ました。ライブラリの作り方おかしいでしょか。
0737デフォルトの名無しさん
2008/01/19(土) 15:31:29ざっと見たところ出来ることとしては
・プロトコル解析処理の追加
・解析結果を利用したカスタムパケットフィルタリング
・統計情報の収集等。
などが出来そうですが、サンプルとか情報少ない・・・。
使ってる人います?
0738デフォルトの名無しさん
2008/01/19(土) 15:32:350739デフォルトの名無しさん
2008/01/19(土) 16:01:560740デフォルトの名無しさん
2008/01/20(日) 15:13:20プロトコル解析につかってるよ。
特にバイナリフォーマットのパケットだと解析できた方が便利だよ〜。
0741737
2008/01/21(月) 00:03:16Dissectorの機能を使用してですか?
wiresharkのリファレンスみただけではどうも
全体像がいまいち分かりにくいです。
どっか纏まったサイトあります?
0742デフォルトの名無しさん
2008/01/21(月) 19:44:31その方面だと思うんだけど
商業作にはまだと確認しました
ttps://sv.kikyou.info/trac/kirikiri/browser/kirikiri2/trunk/kirikiri2/src/plugins/win32/squirrel
プラギンはあるんですねー
アドベンチャー系だとコルーチンの使いでがあるところがあるか微妙ですが
0743デフォルトの名無しさん
2008/01/21(月) 19:48:090744デフォルトの名無しさん
2008/01/21(月) 21:51:02LuaならLuaでシナリオをいわばハードコードするの?
0745デフォルトの名無しさん
2008/01/21(月) 21:53:590746740
2008/01/22(火) 21:48:29dissector使ってますよ。
http://wiki.wireshark.org/Lua
↑を参考にして、あとは試行錯誤の繰り返しですね・・・
0748デフォルトの名無しさん
2008/01/23(水) 22:35:01DSL見ててmurglaLuaが良いと思ったんですが、
ほかにお勧めのものありますか?
0749デフォルトの名無しさん
2008/01/23(水) 22:36:340750デフォルトの名無しさん
2008/01/24(木) 00:11:030751デフォルトの名無しさん
2008/01/24(木) 00:11:43lua_qtとLua-Gtkだ
0752デフォルトの名無しさん
2008/01/24(木) 00:15:580753748
2008/01/25(金) 00:12:41参考にしてみる。ちょっとサイズでかいけど。
0754デフォルトの名無しさん
2008/01/25(金) 01:07:070755748
2008/01/25(金) 22:30:19現状、なぜかエラーがでて、Lua-gtkが使えてないが、
結構期待が持てる。でもドキュメント類が少ない。。。
まあ、サンプルコード見る限りわかりやすそうではあるが、発展途上って感じもする。
murgaLuaはFLTKベースで、ちょっと癖はあるがGUIBuilderにfuluidとか使える。
あと、検索すると使ってる人結構いるのな。これも結構簡単そう。
lua-qtはqtのない環境なので見てません。
wxPythonはサイズ的に却下。Luaとは桁が違う。
0756デフォルトの名無しさん
2008/01/25(金) 23:11:340757デフォルトの名無しさん
2008/01/26(土) 00:39:270758デフォルトの名無しさん
2008/01/26(土) 00:39:46どんなエラー?
Lua-Gtkのドキュメントは全然無いけど、GTK自体のドキュメントは豊富だからそっちを参考にしたほうが良い。
PyGTKやRuby/GTKのドキュメントが読みやすいと思う。
0759デフォルトの名無しさん
2008/01/28(月) 20:05:56lua: error loading module 'gtk' from file './gtk.so':
./gtk.so: undefined symbol: gtk_builder_new
0760デフォルトの名無しさん
2008/02/03(日) 17:33:52マニュアルの一番上にも書いていますが、内容を
http://wikiwiki.jp/lua/?FrontPage に移そうかと思っています。
他によい場所などありますか?
0761デフォルトの名無しさん
2008/02/03(日) 20:14:59いつもお世話になってます
大学を卒業なされて日本語マニュアル置けなくなったんですか?
自分としては見られればどこでもいいです
0762デフォルトの名無しさん
2008/02/04(月) 13:23:47おお、おつかれさんです。
そちらでよいかと思われます。
0763デフォルトの名無しさん
2008/02/04(月) 13:26:41LLスレが軒並み荒れてるのにここが荒れてなくてw 実感した
0764デフォルトの名無しさん
2008/02/04(月) 14:35:40http://ja.wikipedia.org/wiki/%E8%BB%BD%E9%87%8F%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E
>ここでいう「軽さ」はプログラマの負担の軽重を指し、実行速度やメモリ消費量に優れているという意味ではない。
知らなかった・・・
0765デフォルトの名無しさん
2008/02/04(月) 14:40:240766デフォルトの名無しさん
2008/02/04(月) 15:46:310767デフォルトの名無しさん
2008/02/04(月) 15:49:12まあWikipediaが絶対というわけじゃないしな。
あとLuaのページに
>LuaはライブラリとしてC言語を実装している。
って書いてあったんで晒しsage
俺が消してきます
0768デフォルトの名無しさん
2008/02/04(月) 16:18:51We use the term "lightweight languages" to describe some of the common features of these new languages.
The term "lightweight" refers not to actual functionality, but to the idea that these languages are easy to acquire, learn, and use.
Examples that would fall into this category include Perl, Python, Ruby, Scheme (and scsh), and Curl.
http://ll1.ai.mit.edu/cfp.html
http://ll1.ai.mit.edu/
0769デフォルトの名無しさん
2008/02/04(月) 16:59:21確かに全く逆.というか,日本語版は英語版を否定する内容になってるな.
まぁ日本語のLL界隈は変なの沢山湧いてるしな.
0770デフォルトの名無しさん
2008/02/04(月) 17:29:540771デフォルトの名無しさん
2008/02/04(月) 18:14:110772デフォルトの名無しさん
2008/02/04(月) 18:33:500773デフォルトの名無しさん
2008/02/04(月) 18:34:46専用スレ
0774デフォルトの名無しさん
2008/02/04(月) 23:33:45LuaのJIT対応版だって
LuaJIT ? a Just-In-Time Compiler for Lua.
The LuaJIT Project
http://luajit.org/
0775デフォルトの名無しさん
2008/02/05(火) 07:54:330776デフォルトの名無しさん
2008/02/05(火) 08:27:390777デフォルトの名無しさん
2008/02/05(火) 11:15:08各種ライブラリ紹介スレ2
http://pc11.2ch.net/test/read.cgi/gamedev/1177886529/
スレチっぽいのでやってないがあっちにもこっち貼った方がいいのかな。
0778デフォルトの名無しさん
2008/02/05(火) 22:01:50Luaはそのままで十分に速いからウンコな文法でも許されてるんだろうに
0779デフォルトの名無しさん
2008/02/05(火) 23:04:540780デフォルトの名無しさん
2008/02/06(水) 10:03:320781デフォルトの名無しさん
2008/02/06(水) 10:35:49組み込む系の用途がメインの言語と処理系のスレ、ってことで
いいと思う。
0782デフォルトの名無しさん
2008/02/07(木) 07:41:190783デフォルトの名無しさん
2008/02/07(木) 20:15:57http://luaforge.net/projects/lua-tcc/
0784デフォルトの名無しさん
2008/02/08(金) 01:06:33つうか、tccならC内でもcを実行できるだろ。
0785デフォルトの名無しさん
2008/02/08(金) 18:36:35Io Language
http://pc11.2ch.net/test/read.cgi/tech/1201100624/
0786デフォルトの名無しさん
2008/02/08(金) 18:46:070787デフォルトの名無しさん
2008/02/08(金) 19:05:020788デフォルトの名無しさん
2008/02/08(金) 19:15:080789デフォルトの名無しさん
2008/02/08(金) 20:45:540790デフォルトの名無しさん
2008/02/09(土) 01:29:48ただ、実際に組み込んで使っている人いるのかな・・・
組み込みサンプルやドキュメントが少なすぎてなんつーか('A`)
0791デフォルトの名無しさん
2008/02/10(日) 20:35:17http://park7.wakwak.com/~blackbox/
0792デフォルトの名無しさん
2008/02/10(日) 21:19:53超乙
つか、ニコニコ技術部 の人か?w
応援しとるよ
0793デフォルトの名無しさん
2008/02/10(日) 21:24:35スレちですが、せっかくなので Netinstaller 対応しませんか?
0794791
2008/02/10(日) 23:04:440795デフォルトの名無しさん
2008/02/18(月) 06:45:340796デフォルトの名無しさん
2008/02/18(月) 07:55:090797デフォルトの名無しさん
2008/02/18(月) 11:31:46sq.exeを動かす環境がビッグエンディアンじゃないと、
バイトコードがそのまま実行できない
まあ、当たり前なんだが、みんなどうやって解決してるの?
0798デフォルトの名無しさん
2008/02/18(月) 23:18:36それってWi○?
0799デフォルトの名無しさん
2008/02/18(月) 23:24:29それぞれ一つの関数を使っていたりするから
(sqstd_writeとか?もう一つ上の関数だったかも。うろ覚え)
そういうところでまとめてスワップさせてるな、俺は。
んでコード改変したものをコンバート用のツールとして使うと。
0800797
2008/02/19(火) 12:28:23まあ、あえて何かは言わないけど、
今の据え置きってリトルエンディアンの方が少なくね?
>>799
やっぱ、それしかないのね
なんかうまい方法があればなーと、思ったんですが、
楽はできないですね
ありがとうです
0801デフォルトの名無しさん
2008/02/19(火) 17:03:33だったらエンディアン変換くらい対応しといてくれと思ったりするよね
あと読み込みとか書き込みのところでfopenとか使うの止めて欲しい。
あらかじめファイル読み込んだバッファを渡すとかいう風にすればどんな環境でも対応できるのに・・・
0802デフォルトの名無しさん
2008/02/19(火) 17:41:07エンディアン変換は同意なんだが、後者は普通にそうなってるだろう
sq_compile, sq_compilebuffer, sq_readclosure, sq_writeclosure と全部抽象化されてるぞ?
sqstdlib では fopen つかってるけど、これは実装用のライブラリだし、あと、
直接つかってるわけではなくて、1段階抽象化してあるんで、sqstdio.cpp のあたまの
関数いくつか書きなすだけだから、どちらかというと親切な部類にはいると思う。
0803デフォルトの名無しさん
2008/02/20(水) 12:44:02EclipseにLuaEclipse入れて動作させて見たところ
ConsoleViewに
<terminated> test.lua [Lua Standalone Application] hogehoge\lua5.1.exe test.lua
と出てしまいます。手打ちで
>hogehoge\lua5.1.exe test.lua
としたときはちゃんと結果が表示されたのですが
EclipseのConsoleViewに結果を表示させるには
何かおまじないが必要なのでしょうか?
0804デフォルトの名無しさん
2008/02/21(木) 21:12:13http://pc11.2ch.net/test/read.cgi/dtm/1194648279/216
0805デフォルトの名無しさん
2008/02/22(金) 07:17:150806デフォルトの名無しさん
2008/02/22(金) 16:29:420807デフォルトの名無しさん
2008/02/22(金) 16:30:290808デフォルトの名無しさん
2008/02/23(土) 20:47:20http://www.watch.impress.co.jp/game/docs/20080223/gdc_home.htm
0809デフォルトの名無しさん
2008/02/23(土) 22:57:40Luaハジマタ\('o`)/
■ このスレッドは過去ログ倉庫に格納されています