【Lua】組み込み系言語総合【Squirrel】at TECH
【Lua】組み込み系言語総合【Squirrel】 - 暇つぶし2ch745:デフォルトの名無しさん
09/02/25 04:30:52
>>739
どうなんだろねー。delegate はあまり凝ったことできないし、ユーザデータかテーブルでしか
使えないので別の方法だろうとは思う。

思いついた方法その1 メタメソッドを使ってプロトタイプもどきを実装

・「クラス名」は文字列で保持しておく
・_get/_set のメタメソッドを使って、「クラスのメソッドテーブル」を毎回「クラス名」を使って
 引いてきてメソッドはそこから引き出して使うようにする
・「クラスのメソッドテーブル」の中身を書き換えると、同種のオブジェクトのメソッドを一斉にさしかえたことになる

思いついた方法その2 弱参照でインスタンスを全部おぼえておく

・クラスはメソッドを別のテーブルとして持つ(クラスは一度インスタンス化すると書き換えできないため)
・コンストラクタでそのメソッドテーブルの内容をインスタンスに自力でコピーする
・クラスはインスタンスリストも持つ。コンストラクタでインスタンスの弱参照をリストに追加する
・メソッドを書き換えるときは、新規オブジェクト用にメソッドテーブルの中身を置き換えると同時に、
 インスタンスリストに登録されてる全インスタンスの該当メソッドも置き換えてしまう
・インスタンスリストは適当なタイミングで掃除

こんなとこじゃないかなー



次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch