- 1 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 13:02:21 ]
- LuaやSquirrelなどアプリケーションへの組み込み用途で
使われるプログラミング言語についてのスレッドです まとめwiki(なにか質問する前に必ずみること!) wikiwiki.jp/lua/ その他の参考URLは>2から ■過去スレ その3 pc11.2ch.net/test/read.cgi/tech/1160799232/ (前スレ) その2 pc8.2ch.net/test/read.cgi/tech/1063711237/ その1 pc5.2ch.net/tech/kako/1034/10341/1034182349.html
- 132 名前:デフォルトの名無しさん [2008/05/24(土) 19:40:34 ]
- >>131
これだと、RootTable上にinstance_of_Bという名前で生成されているという情報を C++側がつかんでないと実行できないですよね? 現状の設計だと、 ClassAのコンストラクタでstaticなClassA*のListへ突っ込むという処理を入れとく。 ↓ あとでそのリストをぐるっと回してClassAの派生Classのメンバーを呼んでいく という処理をしたいので、 C++側ではそのインスタンスの名前とか生成されたスコープとかは掴んでないんですよね……。 と、今思いついたんだけど。 GetRootTable().GetValue()が返すのはHSQOBJECTだから、 PostConstructが動いた時点でそいつを掴んどけばいいのか?
- 133 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 20:24:40 ]
- class B の constructor() 内で A.constructor() を呼び出すのはどう?
- 134 名前:132 mailto:sage [2008/05/25(日) 00:39:57 ]
- int construct_A(list<A * > *, HSQUIRRELVM v){
A *pA = new A(p); int nRes = SqPlus::PostConstruct<A>( v, pA, SqPlus::ReleaseClassPtr<A>::release ); StackHandler sa(v); pA->SetHSQOBJECT( sa.GetObjectHandle(1) ); return nRes; } こんな感じのconstructorをStaticFuncでぶち込んでやれば Squirrelで生成したHSQOBJECTをC++のClassAで保持することは可能っぽい。 で、constructorに渡してるlist<A*>経由でBのメンバーを呼ぶことも可能だった。 HSQOBJECTがGCタイミングとかで変化したりとかしなければこれでいけっかな?
- 135 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 18:06:06 ]
- wikiのLuaチュートリアルのサイトでlua_dofileって関数あるけど、
これもうなくなったの?
- 136 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 19:55:44 ]
- luaL_loadfile 名前が変わったとかなんとか。
- 137 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 20:10:18 ]
- luaL_dofile
- 138 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 23:14:47 ]
- DSのLuaはスレチだよね?
- 139 名前:デフォルトの名無しさん [2008/05/30(金) 11:10:06 ]
- >>138
URLplz
- 140 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 18:20:10 ]
- つdslua.7mc.org/wiki.cgi?page=Menu
起動できなかったorz..
- 141 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 20:09:59 ]
- そこのページにある
>NDS用のテキストエディタがあれば、NDSだけでプログラミングも可能です とい文章に質問。NDS用のテキストエディタってどこにあるの?
- 142 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 20:13:51 ]
- ttp://7mc.org/2006/09/tarseditor_1.html
- 143 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 03:52:48 ]
- scriptsフォルダはルートに置けよ。念のため。
- 144 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 16:12:35 ]
- Luaって組み込みに関する日本語の解説ページ少ないよね?
Squirrelの方がまだ多い気がする
- 145 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 18:08:36 ]
- >>144
本家のテキストの和訳が出てないんだからまだこれからじゃないの? Erlangだって和訳が出てから急激に増えたんだしさ。
- 146 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 17:27:33 ]
- Luaでバイナリ出力ってどうするんですか?
luaL_loadfileでスクリプト読み込んで lua_dumpで出力でいいんでしょうか? lua_dumpの解説で関数をバイナリ出力すると書いてあるので、 ファイル丸ごと出力するのはまた別にあるのかと思ったのですが、見当たりませんでした
- 147 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 19:57:19 ]
- >>146
luac.c調べればいいんじゃないかな
- 148 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 17:02:47 ]
- Luaの内部の挙動理解するの難しい…
SquirrelはVM内のデータのひとつひとつの役割とか挙動とかもわりと簡単に追えたけど Luaのステートはメンバ変数の意味もよくわからんし、ソースも追いにくい どうしようこれ。突破口が見えん
- 149 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 20:30:15 ]
- 何となくわかってきたスレ汚しスマソ
- 150 名前:デフォルトの名無しさん [2008/06/13(金) 13:15:11 ]
- C++側で定義したクラスをSquirrelで継承したクラスを作って
SqPlus::CreateConstructNativeClassInstanceでインスタンス作ったんだけど 戻り値のSquirrelObjectからどうやってそのメンバにアクセスすりゃいいんだろう? SquirrelObject obj obj = SqPlus::CreateConstructNativeClassInstance(SquirrelVM::GetVMPtr(), _T("hoge") ) ClassA * p = (ClassA *)(obj.GetInstanceUP()); とかでいけるのかと思ったら、そんなメンバねーよ、とVCに言われてしまった。
- 151 名前:150 mailto:sage [2008/06/13(金) 14:47:05 ]
- すみません、私はキチガイでした。
なんでこれでビルド通ったんだ???
- 152 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 18:36:00 ]
- 自分で自分を放送禁止用語で貶めなくても。
- 153 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 21:19:14 ]
- Luaってlua_loadfileで読み込んだ特定のファイルのデータだけ解放する方法ってありますか?
例えば自分で作成したテーブルにスクリプトを読み込ませて、それを削除する、とか。
- 154 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 18:03:55 ]
- グローバルに追加した物を削除してGCかければいいとは思うけど…
方法としては、ロード前にグローバルテーブル入れ替えちゃう方法もいいかも。
- 155 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 21:43:38 ]
- SquirrelのコンパイラがFILE*使ってるのを何とかしたいんだけど、
sqstd_fopen、sqstd_fread、sqstd_fwrite、sqstd_fseek、sqstd_fclose、 sqstd_feof、sqstd_ftell、sqstd_fflush これ全部書き換えればなんとかなるかな? 誰か実証した人いない?
- 156 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 08:08:00 ]
- >>155
うちは2.2.1でそれで一応動いてるよ。squirrelの全機能の検証まではしてないけど。
- 157 名前:デフォルトの名無しさん [2008/06/23(月) 01:17:20 ]
- >>154
それをやる方法がAPIで見つからなかったんですが… ひょっとしてlua_Stateのl_gtメンバを 直接書き替えるんですか?
- 158 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 07:49:48 ]
- >>157
>ひょっとしてlua_Stateのl_gtメンバを >直接書き替えるんですか? さすがにそんなことを推奨しないよw setfenv()使えばいいかと。 CでやるならluaB_setfenv()あたり参考に。 ただグローバルそのまま置き換えると元のグローバルにあったAPIとか全部使えなくなるわけだけど、 新しいグローバルのメタテーブルの__indexに元のグローバルでも入れとけば なんとかなるんじゃないかなぁ。
- 159 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 23:40:50 ]
- ttp://sankei.jp.msn.com/topics/affairs/8181/afr8181-t.htm
職務質問で勝手に手を突っ込んだポシェットの中の、ツールナイフの剥き身の刃を触ったら切れて公務執行妨害だとか もう警察も秋葉原で事件さえ起これば何でも良いみたいだな
- 160 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 23:52:37 ]
- test
- 161 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 15:24:10 ]
- tolua++ってオワタんですか?
サイトにアクセスできないけど…
- 162 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 16:13:16 ]
- まだ繋がる。
プロキシを使うと接続できるという報告例あり。
- 163 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 16:29:25 ]
- よくわからんけどそれは串のキャッシュを見てるだけなんじゃ…。
- 164 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 03:29:45 ]
- あーやっぱtolua++つながらない人いるんだ。
うちも基本繋がらないんだけど、串とか携帯とかhtmllintゲートウェイとか経由すれば大抵いけるんだよね。 調べた限りではその付近のIP一帯につながらない。どっかでルーティングが狂ってそう。
- 165 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 12:46:37 ]
- LOVEっていうLua用?の 2D Game Engineみつけた
チュートリアルは知りたかったこと扱ってるし簡単そう!
- 166 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 12:49:28 ]
- love.sourceforge.net/
- 167 名前:デフォルトの名無しさん [2008/06/30(月) 13:21:17 ]
- そういや、後輩が持ってたけどLuaの本っていつの間にでたん?
- 168 名前:デフォルトの名無しさん [2008/06/30(月) 14:13:00 ]
- ググレカス
- 169 名前:デフォルトの名無しさん [2008/07/05(土) 17:30:37 ]
- ゲーム向け組み込みJavaScript(まだベータ版)
CRI Script - Trac criscript.com/trac ・ゲームへの組み込みを念頭に作られた ECMAScript の処理系 ・PC と Xbox360 で動作確認 ・BSD ライセンスに近い独自ライセンス ・バイトコードにコンパイルして実行 (=実行時オーバーヘッドが少ない) ・マルチスレッドサポート; resume() という言語拡張も。 ・C++ との相互利用が簡単 ・PowerPC, ARM に向けた最適化 ・Eclipse によるデバッガ ・コンポーネントをカスタマイズ可能で、メモリ使用量が小さい ・GC のタイミングをコントロールできる ・Vector とか Matrix とか 参考URL ※箇条書きは書きサイトより引用 ゲーム組み込み用の ECMAScript 処理系 CriScript - Game Scripting Memo d.hatena.ne.jp/epics/20080506/p2
- 170 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 18:23:12 ]
- なんで60MBもあるんだよ・・・
- 171 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 20:44:47 ]
- boostのライブラリのせいかな? srcのほとんどがboostのヘッダだ。
リリースとデバッグのライブラリで合計400MBもある。
- 172 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 23:03:55 ]
- bisonとか使うなつーの
- 173 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 00:34:15 ]
- 後発なんだったらせめてLuaあたりは軽くこえてもらわんと
- 174 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 01:05:39 ]
- Cから使えるJavascriptといえば
spidermonkeyはどうなんだ yieldも使えるし
- 175 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 16:52:05 ]
- >>172
なんで? 使いたいの使えばいいじゃん。
- 176 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 17:06:10 ]
- やりたいようにやればいいじゃん
- 177 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 22:34:18 ]
- ライセンスは?
- 178 名前:デフォルトの名無しさん [2008/07/10(木) 13:03:11 ]
- セデックでスクワラルのセッションがある
- 179 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 13:47:56 ]
- >>177
ttp://www.gnu.org/licenses/gpl-faq.ja.html#TOCCanIUseGPLToolsForNF
- 180 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 16:50:30 ]
- luaでゲーム作る人ってやっぱりそんないないのか
- 181 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 22:32:01 ]
- 小規模なゲームだと使うメリットがあんまりないし
使うほど大きな規模のゲームがそもそも作られない ・・・んじゃないかと思う あと組み込み言語自体がいまいち一般的じゃないよね
- 182 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 00:30:14 ]
- 海外ゲーはMOD改造しやすいように組み込み言語やXMLなどを使っている。
一方、日本は海外のようなMOD文化が弱い。あっても、バイナリ解析によるデータ変更や画像差し替えが主。 日本のゲームは書き換えを許容する文化でないから、汎用言語を使って間口を広げる必然がないのかも。
- 183 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 00:50:19 ]
- homeworldシリーズはluaだったよ
- 184 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 03:56:17 ]
- luaやsquirrel使ってたとしても
あえて公表する理由がない
- 185 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 15:15:50 ]
- >>184
luaはライセンス表記しないとダメだろ
- 186 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 19:17:01 ]
- luaはMIT、Squirrelはzlib
- 187 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 20:53:24 ]
- 今気付いたんだが、MITライセンスに関するOSG-JP参考訳とWikipediaの内容が全然違うような?
ttp://sourceforge.jp/projects/opensource/wiki/licenses%2FMIT_license ttp://ja.wikipedia.org/wiki/MIT_License
- 188 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 21:57:26 ]
- >>181
DSluaおもしろそうだと思ったんだがな・・・
- 189 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 23:46:37 ]
- 組み込み系の言語はそもそもゲーム本体作るのに向いてないしな。
アクションゲームの敵の動きや敵の配置とかをスクリプトで記述するのには向いてるけど。
- 190 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 00:20:11 ]
- >>182
XMLってまじっすか
- 191 名前:デフォルトの名無しさん [2008/07/12(土) 01:13:13 ]
- >>190
Rise of Nationsとか思いっきりXMLだったな。 改造し放題。 AoE3も確かそうだった気がする
- 192 名前:デフォルトの名無しさん [2008/07/12(土) 01:15:06 ]
- >>189
embeddedの言語はあくまでDSLだからねえ Pythonとかのレベルになるとそうでもないんだろうけど
- 193 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 02:17:26 ]
- Pythonはbattery includedだが電池を作るのに向いてるわけじゃないだろ。
- 194 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 02:37:33 ]
- >>187
そう? 言っていることは同じで、Wikipediaは要約しているだけのように見えるけど。 ところで、このライセンスだと、ソースコードを配布しない場合も ライセンス文を書く必要があるってことだよね? 商用ゲームだと、マニュアルの半ページくらいうはめになりそうだ…
- 195 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 05:08:02 ]
- >>185, >>194
著作権表示および本許諾表示を記載しなければならない、というのはソースコード等の話です(消すな、ということ)。 マニュアル等への表示義務はないです(旧BSDライセンスには宣伝条項があった)。 あとサブライセンスが許可されているから、より権利を制限する方向へのライセンス (例えばGPLや商用ライセンス)を上からかぶせて適用することには問題がない。 ライセンス表記が必要だと思われてるとはなあ 業界でなかなかオープンソースが使われないわけだ
- 196 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 05:32:37 ]
- ↑偉そうなこといって本当にすまんw
zlibと間違ってたみたい
- 197 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 16:14:21 ]
- MITの場合でも、見ようと思えば見れる場所にライセンスファイルなりを置いておけばいいでしょ。
オンラインのCREDIT表記あたりが適切か。
- 198 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 23:11:24 ]
- >>191
それはデータやら何やらの記述だな。
- 199 名前:デフォルトの名無しさん [2008/07/13(日) 02:48:50 ]
- >>198
まさか、CDATAでスクリプトでも埋め込むのか?w
- 200 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 23:38:11 ]
- XMLで書かれたスクリプトってのもどこぞにあった気がする・・・
あんま書きたくないが。
- 201 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 23:49:03 ]
- >>200
XMLで書かれた同人ゲームを一つだけ知ってるが、 解析がえらい面倒だったな
- 202 名前:デフォルトの名無しさん [2008/07/14(月) 04:31:50 ]
- >>200
BulletMLもXMLのDSLだな
- 203 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 11:28:11 ]
- XMLで書いてると最後に統計取れたり
解析が楽だったりするのがメリットか。 ドキュメンテーションも楽だろう。
- 204 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 12:34:15 ]
- S式じゃダメ?
- 205 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 12:40:29 ]
- セックスピー
- 206 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 21:17:26 ]
- Lua workshop2008もうすぐはじまるよ
@ワシントン州で
- 207 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 18:15:34 ]
- xtal更新とまっちまってるなあ
- 208 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 00:54:26 ]
- >>207
C++では行き詰まるという現実に気がついたのでは
- 209 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 01:00:17 ]
- つまりスクリプトをつくるための軽量スクリプト言語を
アレ?
- 210 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 16:41:45 ]
- わらかすなwwwwww
- 211 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 19:15:16 ]
- Lispでいいじゃん
- 212 名前:デフォルトの名無しさん [2008/07/20(日) 19:41:13 ]
- そういや、Ruby の Matz もOOPのスクリプト作るのにOOPはむりぽ
みたいなこと言ってたな
- 213 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 23:37:57 ]
- >>212
なんで?やっぱり速度?
- 214 名前:デフォルトの名無しさん [2008/07/21(月) 01:53:26 ]
- 今時、さすがに速度じゃないと思うがw(開発速度?w)
Matz日記の過去ログにあったかもしれん。ちょっと行ってくる
- 215 名前:デフォルトの名無しさん mailto:sage [2008/07/21(月) 02:06:29 ]
- 確か、まつもと氏が混乱するとかいう理由だったような・・・・と思ったら
オブジェクト指向言語でオブジェクト指向言語を実装するというのに、脳がついていけないんだけど。 それって、僕だけ? (笑) C++ で言語作ってる人がいるけど、よくやるなぁ、とか思う。 ベース言語のクラスとか継承とかと、実装言語のクラスや継承がごっちゃになて、訳わかんなくなっちゃう。 設計して、どういう風に作ろうかなと思った時点で、もう、わかんなくなって「もういい、やめた」って。 ttp://jp.rubyist.net/magazine/?0001-Hotlinks
- 216 名前:デフォルトの名無しさん mailto:sage [2008/07/21(月) 05:44:25 ]
- C++/CLIのことかー
- 217 名前:デフォルトの名無しさん mailto:sage [2008/07/21(月) 16:17:08 ]
- なんだ…人間の能力の限界の話なのかよ
- 218 名前:デフォルトの名無しさん mailto:sage [2008/07/21(月) 16:53:35 ]
- PHPもC++でエンジン書いてたが、やばいと気がつき後にむりやりCで
書き直したと聞いたことがある。具体的に何がやばかったのかは知らない。
- 219 名前:デフォルトの名無しさん mailto:sage [2008/07/21(月) 17:24:10 ]
- 俺には全く理解できん
CでいいならそのままC++でもいいじゃんと思うんだが…
- 220 名前:デフォルトの名無しさん mailto:sage [2008/07/21(月) 17:36:48 ]
- そもそもCよりC++の方が型がこなれているんだから
OO捨ててもCより享受できるものが多いはず。 まあ、でもポータビリティ犠牲にするほどのものでもないかなあ。
- 221 名前:デフォルトの名無しさん mailto:sage [2008/07/21(月) 18:47:24 ]
- >>219
C++ は、効率重視で、バイナリ互換とるのが極端に難しい実装ばっかりなので、 独立アプリならいいんだけど、ライブラリとして広く長期的に共有されるような ものの記述には残念ながらあまりむいてない。 Windows はこれを COM という形で一応解決したんだけど、UNIX 系OSではその手のものが 統一的につくられることは結局なかったからね。php のような、他と組み合わせた 運用が求められるものだとこの点はわりと致命的なので、Cでかかざるをえ なくなったんじゃないかな。 一応 Objective-C という選択はあるけど、こっちは実装が限られてるからねぇ
- 222 名前:デフォルトの名無しさん mailto:sage [2008/07/21(月) 19:14:47 ]
- 勉強になりました
- 223 名前:デフォルトの名無しさん mailto:sage [2008/07/21(月) 21:55:19 ]
- ABIの問題ってことかな。
C++のライブラリをextern "C"してDLLやsoにしたものを、 Cとかで呼ぶとなんかまずそうなのは想像できるな。 グローバルなコンストラクタとかあったらそれはいつ呼ばれるんだろうって。
- 224 名前:デフォルトの名無しさん mailto:sage [2008/07/21(月) 23:31:59 ]
- 継承かガベージコレクトじゃね?
- 225 名前:デフォルトの名無しさん mailto:sage [2008/07/22(火) 00:54:53 ]
- >>223
もう一度良く考えてみろ。どうにもならないことはない。単にリンカがどうするかというだけのことだ。 しかし、万人が納得する解法は無いという事も、ここからわかる。
- 226 名前:デフォルトの名無しさん [2008/07/24(木) 20:18:47 ]
- Squirrel3.0alpha1リリースあげ
- 227 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 08:35:19 ]
- イラネ
- 228 名前:デフォルトの名無しさん [2008/08/02(土) 19:26:37 ]
- hoshu
- 229 名前:デフォルトの名無しさん [2008/08/03(日) 06:02:10 ]
- squirrelでsq_compile()を行うとプロシージャが一つ返ってきますが、
このプロシージャは何を表しているのでしょうか? たえば、コンパイル元のファイルが、 function foo() { print("foo"); } function bar() { print("bar"); } の場合、sq_compile()が返すプロシージャはこの2つの内の一つなんでしょうか?
- 230 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 09:02:27 ]
- squirrel 的には用語は「クロージャ」ってのはさておき、
戻ってくるのは、元のソースを頭から終わりまで実行するクロージャになります。 その例でいくなら、「foo() と bar() をグローバル空間に登録するクロージャ」ということになります。 sq_compile → sq_call してはじめてスクリプトで記述したことが意味を持ちます。 sq_compile したものを sq_writeclosure すると、コンパイルされてバイナリ状態に なったスクリプトを保存できます。これを sq_readclosure → sq_call するようにすると、 実行時にコンパイルしなくてすみます。 ちなみに sqstdio にふくまれる sqstd_loadfile, sqstd_dofile は、テキスト/バイナリいずれのスクリプトも 同様に扱ってくれるので便利です(ファイルのヘッダをみて、sq_readclosure / sq_compile を切り換えてくれる
- 231 名前:229 [2008/08/03(日) 13:22:55 ]
- >>230
解説ありがとうございました。おかげで理解できたような気がします。 説明をふまえて、マニュアルにあらためて目を通すと、 function ciao(a, b, c) { } は this.ciao <- function(a, b, c) { } と等価であるという説明から、「sq_call()が返すのはグローバル空間に登録するクロージャ」ということがより直感的に理解できました。 #コンパイル済みのバイナリについても悩みどころだったので説明感謝です。
- 232 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 01:40:07 ]
- LuaとかSquirrel使ってる人って、存在しない関数・変数の検出や、
引数の数チェックってどうしてます? 実行時にはエラーになりますが、さすがに関数の引数の数間違いで 実行が止まるのは面倒ですし、 エラーが起きるコードが普段はなかなか実行されないところに あるものだったりするとかなり面倒ですよね。。。
|

|