【Lua】組み込み系言語総合 その3【Squirrel】
■ このスレッドは過去ログ倉庫に格納されています
0880デフォルトの名無しさん
2011/01/31(月) 15:05:16目的とすることは、まあ、以下の手順でできると思われ。
1. とりあえずインスタンスとしてバインドしてそれをスタックにつむ
2. sq_pushstring(v, "メソッド名"); sq_get(v, -2); // 目的のメソッドを取得してスタックにのせる
3. 格納先のテーブルをスタックにつむ
4. sq_pushstring(v, "登録名"); // テーブルに格納する名前
5. sq_push(v, -4); // インスタンスを再度スタックにつむ
6. sq_bindnenv(v, -3); // メソッドにインスタンスをバインドしたものを積む
7. sq_createslot(v, -3, SQFalse): // バインドされたメソッドをテーブルに格納
8. sq_pop(v, 3); // テーブル., メソッド, インスタンスを解放
これで table["登録名"] = instance.メソッド名.bindenv(instance); と同じ意味になる
squirrel のメソッドは標準状態ではインスタンスへのバインドをもってないから、
テーブルとかにいれてコンテキストを維持したままとりまわしたい場合は bindenv 処理が必要なのに注意。
sqrat にあわせるなら、バインド済みメソッドを取得するよーな処理をインスタンスのメンバとして
書き足せばいいやろね。それは自分でなんとかがんばれ。
■ このスレッドは過去ログ倉庫に格納されています