トップページtech
1002コメント341KB

【Lua】組み込み系言語総合 その6【Squirrel】

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2013/03/10(日) 15:10:32.28
LuaやSquirrelやAngelScriptなどアプリケーションへの組み込み用途で
使われるプログラミング言語についてのスレッドです
まとめwiki(なにか質問する前に必ずみること!)
http://wikiwiki.jp/lua/

その他の参考URLは>2から

■前スレ
【Lua】組み込み系言語総合 その5【Squirrel】
http://toro.2ch.net/test/read.cgi/tech/1321063450/
■過去スレ
その4 http://hibari.2ch.net/test/read.cgi/tech/1301414458/
その3 http://hibari.2ch.net/test/read.cgi/tech/1272643397/
その2 http://pc12.2ch.net/test/read.cgi/tech/1243210301/
その1 http://pc12.2ch.net/test/read.cgi/tech/1205208141/
プログラミング言語 Lua
その3 http://pc11.2ch.net/test/read.cgi/tech/1160799232/
0248デフォルトの名無しさん2013/10/25(金) 15:45:29.07
保護モード事態が特殊な動作なわけだから resume を pcall すれば?
0249デフォルトの名無しさん2013/11/02(土) 00:38:50.34
クラスの中にlua_stateを作っておいて、値の更新とかをlua側でしたいんですけど、
luaに自分自身を渡して、lua側で値を更新させて、自分自身に反映させるのは
どうすればいいでしょう。lua_pushlightuserdataじゃインスタンスは別になる?
0250デフォルトの名無しさん2013/11/02(土) 01:04:30.61
まずC++側とC側に分けて
値の更新をC側でできるようにしてから
C側の内部でLuaを使う
0251デフォルトの名無しさん2013/11/02(土) 01:06:57.46
C++でsetter作って、luaでそれを呼ぶってことですか?
すみません。C++とCで分けるという所はどういう感じで分けるのでしょうか。
0252デフォルトの名無しさん2013/11/02(土) 10:59:08.34
luaで何かアクションをするとC++側の値が書き換わるようにしたい?
userdataにメタテーブルを仕込んでやればできる。他のやり方も
あると思うけど。
例えばuserdataにthisや関数へのポインタを入れておいてメタテーブルに
cfunctionを登録しておく。登録したcfuntcionではuserdataから
thisとかを取り出して何かすればいい。
0253デフォルトの名無しさん2013/11/02(土) 12:43:26.03
>>252
やりたいことは、リコンパイルしなくても値を変更できるようにしたいです。
そこで、luaにオブジェクトの初期処理や更新処理を持っていって、描画はC++で
しようと思ってます。
教えていただいた内容を調べながら試してみます。
0254デフォルトの名無しさん2013/11/02(土) 12:55:58.52
それだったら、C++からLuaの変数を読み出すだけでもいいんじゃない?
C++でLuaチャンク実行→Luaチャンク実行終了→変数の値を読み出して利用する。
LuaのプログラムからCallbackさせながら、C++プログラムと協調動作させる
必要があれば、252のようにする必要があるけど。
0255デフォルトの名無しさん2013/11/02(土) 13:10:44.93
>>254
初期処理でクラスの各項目値は、luaのメソッドを呼び出してその戻り値を受けるので
出来たのですが、更新処理となるとロジックがあって、単純に戻り値を受け取るだけだと
中々難しいなーと思って、ロジックもluaに移そうと思っていました。
そういうのはやっぱり、lua⇒C++の関数⇒luaみたいな感じになるんですね。
自分のイメージとしてはC++でインスタンスをluaに渡す⇒luaで引数のインスタンスに対して
色々な処理を行い値を変更する⇒luaメソッド終了⇒C++に処理が戻るみたいな感じです。
0256デフォルトの名無しさん2013/11/03(日) 10:39:57.23
スクリプト内の変数の値をC/C++側から操作したいって事なのかな。
0257デフォルトの名無しさん2013/11/03(日) 11:14:19.88
C++のポインタはキャストするとどうなるか調べるのが面倒臭いって事でしょ
Cならlua_pushlightuserdataでいいよ
0258デフォルトの名無しさん2013/11/03(日) 11:24:38.17
制御権の受け渡しをどうするかってことでしょ。
Lua側の記述とLuaチャンクの実行の仕方を工夫するしかないんじゃないか?
0259デフォルトの名無しさん2013/11/03(日) 12:00:06.70
C++でnewで確保した領域のポインタを
lua_pushlightuserdata等でlua内の変数に渡しているときに、
このlua内の変数のスコープがはずれたりしたときに、
このポインタをdeleteしたいのだけどできますか?
0260デフォルトの名無しさん2013/11/03(日) 14:45:33.09
基本的に無理じゃね。メタメソッド持てないし
可能ならuserdataで確保したメモリそのものに割り当てるか
スマポとかで包んでからuserdataに突っ込む感じになるかと
0261デフォルトの名無しさん2013/11/03(日) 18:17:24.79
やった事ないけど、tableに突っ込んで__gcイベント捕まえれば逝けない?
0262デフォルトの名無しさん2013/11/03(日) 21:02:45.16
lightuserdataのuserdataに対するメリットって何?
リファレンス見ても機能が少ないだけで何が嬉しいか分からなかった。
0263デフォルトの名無しさん2013/11/04(月) 00:14:11.47
>>259
そこまでやるならもうAngelScriptの方がいいような気がする。
0264デフォルトの名無しさん2013/11/04(月) 00:19:18.11
>>262
ポインタもってるだけだから圧倒的にシンプルだよ。luaがわでは寿命管理しないけどとにかくデータの参照を維持したい場合に使う
0265デフォルトの名無しさん2013/11/04(月) 00:23:01.58
>>259
tableじゃなくてuserdataのmetatable使うのか。面白そうなのでやってみた
配置newを定義して__gcをセットしたmetatableを設定する. gcでデストラクタを明示的に呼ぶ
class a{
void *operator new(size_t size, lua_State *L) {
void *p =lua_newuserdata(L, size);
lua_newtable(L);
lua_pushcfunction(L, gc);
lua_setfield(L, -2, "__gc");
lua_setmetatable(L, -2);
return p;
}
static int gc(lua_State *L) {
a *p = static_cast<a *>(lua_touserdata(L, -1));
p->~a();
return 0;
}
};

// newと同時にLUAスタックにプッシュされる
a *a1 = new(L) a;
0266デフォルトの名無しさん2013/11/04(月) 01:05:41.10
変数がスコープから消えるときは__gcでイベントをとれるとして、
lua内の変数のコピーも認識できないとdeleteしていいかわからないなぁ。
02672662013/11/04(月) 01:11:07.79
と思ったけど、__gc呼ばれるときは問答無用でdeleteしていいのかな?
0268デフォルトの名無しさん2013/11/04(月) 01:56:57.82
そもそもスコープぬけてすぐgcよばれる保証あるの?という素朴な疑問
0269デフォルトの名無しさん2013/11/04(月) 02:42:16.33
無いです!
0270デフォルトの名無しさん2013/11/04(月) 03:46:09.89
参照カウンタではないGCを使う言語は、
あんまりそういう作りになってないなぁ
0271デフォルトの名無しさん2013/11/04(月) 09:52:17.93
スコープぬけてすぐってのは
newではないコンストラクタを使うからできるんだよ
newを使わない保証があるなら参照カウンタもいらないよ
0272デフォルトの名無しさん2013/11/04(月) 15:21:11.51
スコープ抜けてすぐなんて制約条件を勝手に厳しくするなよ
> このlua内の変数のスコープがはずれたりしたときに、
0273デフォルトの名無しさん2013/11/04(月) 15:38:02.02
質問者の意図はたぶんそれで合ってると思うの。C++使う人がluaで嵌まる典型的ポイントだよね

明示的なリソース廃棄処理つくらないと回避できない
0274デフォルトの名無しさん2013/11/04(月) 16:24:50.58
>>272
あはは、たしかにw
スコープがはずれたとき
ではなく
スコープがはずれたりしたとき
であるから
結局GCで事足りるなw
0275デフォルトの名無しさん2013/11/04(月) 18:42:33.31
リソースの解放(例えばファイルのクローズ)をデストラクタで
行うなんてのはGC備えてる言語じゃ禁じ手じゃん。
C++オブジェクトに限らず、Luaオブジェクトでもスコープ外れた
タイミングで即解放なんて無理でしょ。
C++と同じようなスコープ外れて即廃棄は無理なので、それの寿命
をLuaオブジェクトで管理しようというなら設計が間違ってる。
02762742013/11/04(月) 19:39:14.73
やらない ってのと やれない っては大きな違いがある。
このケースは前者でやる必要がないからやらないだけなんだよ。
やればやれるよ?
metatableのdestructorで
時限付きにhookONしてそこでcollectすればいいだけでしょ?

で、それがなんだよって話。
0277デフォルトの名無しさん2013/11/04(月) 22:38:46.70
AngelScript|Д`)<俺の出番だな

いやマジで
0278デフォルトの名無しさん2013/11/04(月) 23:06:44.14
JavaでGC避けようとするとこんな感じのがある。
http://www.javafesta.jp/2007/pdf/C1.pdf
http://www.infoq.com/jp/news/2010/11/tc-bigmemory
0279デフォルトの名無しさん2013/11/04(月) 23:17:12.73
squirrelがリファレンスカウントなのもgc動作を嫌ってだな
0280デフォルトの名無しさん2013/11/05(火) 00:28:39.93
リファレンスカウンタの方がマーク&スイープよりも安いからな。
0281デフォルトの名無しさん2013/11/05(火) 08:03:02.46
Javaや.NETのGCくらいになると無茶苦茶高性能だよ
Javaはチューニングがサーバー用だからアレだが
まあそこまでいかないと性能が出ないなら個人レベルでは無理があるわな
0282デフォルトの名無しさん2013/11/05(火) 12:38:56.98
AngelScriptは基本的には参照カウントのようだが循環参照時などはGCをする模様
0283デフォルトの名無しさん2013/11/05(火) 20:08:05.76
AngelScript|Д`)<AngelScript2.28.0記念カキコ
0284デフォルトの名無しさん2013/11/05(火) 20:24:10.43
        (´\r-、     ┼         +     /`/`)    +
     ┼   (\. \!              *     // ,/)  *
  +     * (ヽ、   \ +  *          /   /)   +
      ⊂ニ      )        *   +  (     ニ⊃
  *  +  ⊂、     (   ∩___∩   ノ     ⊃   +  *
         (/(/   ヽ  | ノ     ヽ /    、)ヽ)  ┼
    +        (/     ∨  ●   ●レ /⌒) 、)ヽ)
     *       (/'   |   ( _●_) ミ'  /、)、)´       +
         +    (/'ヽ 彡、   |∪| ノ /     AngelScript!!
     +            / __ヽノ  /  *      +
       ┼        (___) /      +
               /     /
               (_ ⌒丶..
                | /ヽ }.
                  し  ))
                    ソ  トントン
0285デフォルトの名無しさん2013/11/05(火) 23:42:30.14
参照カウントってGCとちがうものなの?
0286デフォルトの名無しさん2013/11/06(水) 09:10:15.25
知ったかに構うなよ
0287デフォルトの名無しさん2013/11/07(木) 07:39:13.29
でもまあ一般的にGCと言えばマーク&スイープじゃね
参照カウンタって単なるコーディングテクニックみたいなもんだから注釈なしでGCと呼ぶのは抵抗ある
0288デフォルトの名無しさん2013/11/07(木) 09:59:04.25
全然違う
0289デフォルトの名無しさん2013/11/07(木) 12:43:45.41
>>285
GCの実装の仕方の一つとして、参照カウントを使うものがある、といった感じ
0290デフォルトの名無しさん2013/11/07(木) 15:16:54.50
広義ではGCに含まれる。
狭義では参照カウントとtracingに分けて、tracing型のみをGCとすることもある。

まだ一般的ではないが "A unified theory of garbage collection" という論文によれば、
参照カウントとtracingは双対なんだそうだ。
0291デフォルトの名無しさん2013/11/07(木) 20:06:48.85
Squirrelの人が熱弁してたなあ
0292デフォルトの名無しさん2013/11/15(金) 18:43:55.94
当方素人で疑問なのですが、スクリプトでゲームを作るということが、
つまりどういうことなのかっていうのがイマイチ掴めません

例えば、C/C++コード(DxLibやSDLなど)で適当にゲームウインドウを表示したら
あとはスクリプトコードを呼び出すだけ、という状態のことなのでしょうか?

このときに、最低限としてスクリプト側からC側の
・メインループ毎に必要な処理(DxLibのProcessMessageなど)
・キーボード・マウス・ジョイパッドなどの入力を取得する機能
・画像を表示する機能
など、呼び出すことができれば最低限ゲームっぽいことはできそうでしょうか?
そして、速度の問題がある処理はその都度C側で記述していく、とか

あるいは、あるタイミングの数値計算処理であるとか、RPGのイベントだとか
再コンパイルせずに調節したい場合にスクリプトを用いるということもあると思いますが
この場合、スクリプトを実行するVMをどのインスタンスで保持するのが良いのでしょうか
0293デフォルトの名無しさん2013/11/15(金) 19:49:12.61
ネイティブで書きにくいところをスクリプトで書く
それだけの話であって何から何までスクリプトということは無い
0294デフォルトの名無しさん2013/11/15(金) 20:47:11.59
自分はゲーム内のオブジェクトの動きや描画の指定にスクリプト使ってるよ。
0295デフォルトの名無しさん2013/11/15(金) 21:58:13.61
スクリプト言語による効率的ゲーム開発 新訂版 (LuaとC/C++連携プログラミング)
とか、luaとゲームみたいな本には序章あたりにそういうこと書いてあるから、何冊か本屋でみてみたら?
0296デフォルトの名無しさん2013/11/15(金) 22:02:34.14
>>293 >>294 >>295
どうもありがとうございます!
いつもいつもプログラミングのみでミニゲーム作る止まりなので
スクリプト組み込みを勉強してに中規模以上のゲームを作れるようにがんばります
0297デフォルトの名無しさん2013/12/04(水) 01:39:29.32
iPadで動くCodeaって、内部でLua使ってるみたいだね。
0298デフォルトの名無しさん2013/12/15(日) 20:30:59.57
ゲームの会話シーン(ノベルゲーム風)をスクリプトで記述したいんですが、
やり口としてはどういうのが良いでしょうか?

今考えているのは
・会話イベントのひとまとまりごとに1ファイルで記述する
・文章を記述する前に置換文字や会話に使用するキャラクターを定義できる
・会話シーンに必要なアクション(立ち位置、表情変更など)を記述できる

想像してるイメージとしては↓な感じです
(使用スクリプト未定なので文法やメソッド名は適当です。雰囲気が伝わればいいですが・・・)

//event1.txt
//最初に置換文字や、使用キャラクターを定義
player = data.getCharacter("主人公"); //キャラ自体を取得
sub = data.getCharacter("サブキャラ");

city = data.getString("街の名前"); //置換文字として定義

//イベント開始
startEvent();

setCharacter(sub);
message(
"いらっしゃい " + player + "さん。" + BR +
city + "にようこそ。");
//キャラクタークラスはそのまま文字置換にも使えるようにする。
//BRには改行を定義しておく。

endEvent();
//

これだとダブルクォーテーションがクドい気がするので "ようこそ$[player]さん" みたいなやり方にすべきでしょうか?
0299デフォルトの名無しさん2013/12/15(日) 20:51:22.29
そんなのは簡単な独自言語のほうが使いやすいしツールも作りやすい
安直に汎用スクリプト使おうじゃなくて、まずはユースケースを洗い出してみろ
それほどいろんな機能も自由度もいらないことがわかるはず
0300デフォルトの名無しさん2013/12/16(月) 00:21:21.85
セーブの実現性考えてつくるべし
下手に高級言語にすると死ぬ

人に使わせること考えると、プレーンテキストにタグ埋めるスタイル以外はあり得ない
0301デフォルトの名無しさん2013/12/16(月) 00:49:52.86
同意
セーブや細かい制御のことを考えると、汎用言語を使っても結局
言語内DSL的なものでデータとして埋め込むような形にしかならん
汎用言語の機能をほとんど活かせず、インタプリタを作る手間も無くならず、
ただスクリプトを書くのが面倒になるだけ
0302デフォルトの名無しさん2013/12/16(月) 01:33:50.36
途中セーブって鬼門だしな…
0303デフォルトの名無しさん2013/12/16(月) 18:01:34.83
>>299-302
ありがとうございます、セーブ完全に考えてませんでした。
途中セーブ考えると難易度かなり上がりますね。
0304デフォルトの名無しさん2013/12/16(月) 21:48:48.52
独自スクリプトなら好きなように出来るから、どうとでもなるよ
ADVゲームなんて保存しておくデータは少ないしな
0305デフォルトの名無しさん2013/12/19(木) 20:06:48.55
if文の中のwhile文の中のif文のさらに中のwhileの途中でスクリプトを停止してセーブ、ロードしてそこから再開、とか。
0306デフォルトの名無しさん2013/12/19(木) 21:22:15.85
stateパターンでも使えば?
0307デフォルトの名無しさん2013/12/19(木) 21:35:40.70
>>305
ADVは普通そんなとこでセーブする必要ないよ
もし必要になってしまってるなら設計がおかしい
0308デフォルトの名無しさん2013/12/19(木) 21:54:56.69
DSL専用の言語ってあってもいいのにな
ADVのスクリプトみたいなプル型のインタプリタを作りやすい簡単な言語仕様で
ライブラリにソース渡したら構文解析だけやってくれればいい
0309デフォルトの名無しさん2013/12/19(木) 22:41:18.53
「設計がおかしい」ってさ、
言うのは簡単だしいかにもそれっぽいけど単なる思考停止くさいよね
0310デフォルトの名無しさん2013/12/19(木) 23:00:23.25
>>308
EclipseのXtext/Xtendみたいなのでネイティブアプリに組み込める
ものがあったら俺も欲しいな。
0311デフォルトの名無しさん2013/12/19(木) 23:01:36.14
ターン制と言うか、区切りよく設計しない?
大枠のwhileループとifはあるにせよ、更にその中のwhileの中でセーブはともかくロードはやろうと思わない。
0312デフォルトの名無しさん2013/12/19(木) 23:38:35.63
任意のObjectをセーブ、ロード

Object is a String ←設計がおかしい
0313デフォルトの名無しさん2013/12/20(金) 01:55:56.71
>>305
フラグでメッセージが変わる、とかいうのを複雑にしちゃったらそういうのが発生しそう。
0314デフォルトの名無しさん2013/12/20(金) 12:14:01.98
フラグで文章が変わるなら、変わる文章の手前で条件分岐するだけじゃね?
0315デフォルトの名無しさん2013/12/20(金) 17:12:52.37
変わるのがメッセージだけなら、

flg ? "msg-a" : "msg-b"

って書けるならそのほうがシンプル。
0316デフォルトの名無しさん2013/12/20(金) 21:11:54.76
それだと既読フラグがめんどい
0317デフォルトの名無しさん2013/12/21(土) 08:21:18.69
シンプルだけど読みにくい
0318デフォルトの名無しさん2013/12/22(日) 12:54:39.25
慣れの問題
0319デフォルトの名無しさん2013/12/23(月) 08:32:10.39
慣れないとダメというのがそもそもおかしい
0320デフォルトの名無しさん2013/12/23(月) 11:28:02.04
逆だよ
時間がかかってはダメというのがおかしい
だからゆっくり時間をかけて慣れることが許される
0321デフォルトの名無しさん2013/12/23(月) 12:34:02.63
>>319
俺が慣れてないからforもwhileも禁止、全部ifとgotoで、って言ってた人が昔いたぞ。

>>316
既読を管理する関数 mng_read ってのを作って、
flg ? mng_read("msg-a") : mng_read("msg-b")
とするのはどう?
0322デフォルトの名無しさん2013/12/23(月) 22:24:13.34
>>321
ADVで文章部分に関数使うとか論外だろ…
それにスクリプト打つのはド素人も想定するもんだ
0323デフォルトの名無しさん2013/12/23(月) 22:49:00.75
>>321
そんなBASICでプログラミングを覚えたジジイなんて、
玉切り落としてグズの家系を根絶やしにしてしまえ。
GOTO LESSが推奨されて何年立ってると思っているんだ
0324デフォルトの名無しさん2013/12/24(火) 09:54:37.59
IFとGOTO以外理解できないド素人も想定しなきゃダメですよw
0325デフォルトの名無しさん2013/12/24(火) 13:19:00.89
そりゃシステムの部分でわざわざGOTO使う事はないけど
シナリオスクリプトとして考えたらはGOTOは大事だろ
IFとGOTOだけで書けばセーブデータの問題も解決するわけだし
0326デフォルトの名無しさん2013/12/24(火) 13:43:33.10
チャートの類をつくろうとすると、たとえADVのスクリプトでもgotoもifも禁止だね。バグの温床になる
そういった場合は、遷移は別ファイルにまとめて定義が妥当
0327デフォルトの名無しさん2013/12/24(火) 17:08:31.18
プログラムではまずありえないけど、ループのド真ん中に外から飛び込むジャンプって、
ゲームのシナリオ的にはありそうじゃない。そういうのってどうしてるの?
0328デフォルトの名無しさん2013/12/24(火) 19:11:38.28
gotoは、終了タグを省略したhtmlとか、breakしないswitchと同じだと思う
逆に言えば終了タグを必ず書くgotoなら使っていいんじゃね
0329デフォルトの名無しさん2013/12/24(火) 19:40:46.56
come from文?
0330デフォルトの名無しさん2013/12/24(火) 20:16:45.26
途中でセーブしてそこから続きが出来るようにしないのなら、どんな組み方してもOKだけどな。
0331デフォルトの名無しさん2013/12/24(火) 21:28:56.06
>>326
条件分岐使わずどうやってフラグ分岐するんだ?

>>327
そんなの見たことないが、どういうのだよ?
0332デフォルトの名無しさん2013/12/24(火) 23:30:35.65
>>331
だから別ファイル
どのシーンの次にどのシーンになるのかの
状態遷移だけを記述する言語というか
データ構造を別に準備するのさ
0333デフォルトの名無しさん2013/12/24(火) 23:50:48.99
想定してるのがどういうゲームかで違うのかも

例えばLiveMakerのシナリオ部分は文章とか画像とかの指定で
条件分岐は別になってる
シナリオ書き変えたら分岐も変わってた…なんてことはない
単純に選択肢で話が大きく分岐していくノベル用にはわかりやすくていい

でも細かいフラグ管理やパラメータ要素を入れると難しい
分岐ごとにいちいち分けて考えてたら
バグは出ない以前に途中で投げ出す可能性大
0334デフォルトの名無しさん2013/12/25(水) 01:12:07.86
適当にシナリオ用のVM作ってステートセーブさせれば良いんじゃないかな・・
0335デフォルトの名無しさん2013/12/25(水) 07:14:27.71
プレーンテキストに命令タグを挟む方式だとあかんのですか
ノベルゲーって基本テキスト主体でしょ?
逐次処理できるし、ステートの保存はフラグ一式と行番号の保存でいいし
ループ処理の構文をわざわざ用意する必要ないと思うんだけど・・・
0336デフォルトの名無しさん2013/12/25(水) 10:33:19.18
>>332
あぁ、なるほどね。
確かにそういう作り方をしてるゲームを見た事があるわ。
0337デフォルトの名無しさん2013/12/26(木) 01:56:07.59
ノベルゲーのスクリプトに、Cレベルの制御構文、クラスやコルーチンとかまで入れて欲しいとか言われた事あるわ。
0338デフォルトの名無しさん2013/12/26(木) 10:34:40.60
文章やマクロを使う部分のスクリプトはオリジナルで
クラスやコルーチンのスクリプトは組み込み言語使えば良かろ
0339デフォルトの名無しさん2013/12/26(木) 10:38:32.16
プログラミング知識がある奴用なら
爆速コンパイルのFPCでいいと思うな
0340デフォルトの名無しさん2013/12/26(木) 10:48:29.28
コルーチンはプログラミング言語では直接のサポートがない言語も多いけど、
ゲームのスクリプトとしては需要あるんじゃないかな。

たとえば、ある場所に来るたびに、その場所での「さっきの続き」とか。
0341デフォルトの名無しさん2013/12/26(木) 11:18:48.57
stateパターンでいいじゃん
オーソドックスにフラグ立てていくなりstackでやるなりでいけるでしょ
0342デフォルトの名無しさん2013/12/26(木) 11:41:00.70
手続き的なものは、スクリプトの手続きとして直接記述したいじゃない。
stateパターンというかインタプリタパターンで、その場用のミニ言語を作るんじゃなくて。
0343デフォルトの名無しさん2013/12/26(木) 11:56:29.21
コルーチンのことをIteratorと言う人とStateと言う人とInterpreterと言う人がいるけど
気分で名前が変わるくらいなら名前つけない方がよいよね
0344デフォルトの名無しさん2013/12/26(木) 12:15:58.74
いきなりどうした
0345デフォルトの名無しさん2013/12/26(木) 12:24:14.01
いや全部別のものだし
0346デフォルトの名無しさん2013/12/26(木) 12:28:28.45
>>342
> 手続き的なものは、スクリプトの手続きとして直接記述したいじゃない。
すればいいじゃない
> stateパターンというかインタプリタパターンで、その場用のミニ言語を作るんじゃなくて。
フラグ立てていくだけだからeval出来るものなら既存の言語で簡単に出来るよ

記述が冗長でという話ならpegかなんかでちょろっとgeneratorを書いてやらいい
0347デフォルトの名無しさん2013/12/28(土) 02:26:08.74
動的型のスクリプトの凄さわからなかったんだけど
クラスじゃなくって、インスタンスをバインドして
そいつがファクトリ的な関数いっぱい持ってたら
もうスクリプトの中でやりたい放題なんだね
■ このスレッドは過去ログ倉庫に格納されています