変数回りの整理
変数回りの仕組みで、頭がごちゃごちゃしてきたのでちょっと整理してみる。
実現方法
- 変数はAVM2では、スコープオブジェクトのプロパティで実現する
- スコープは、いくつか積み重ねれる。スコープチェーン?
- スコープチェーンからプロパティを持つオブジェクトを検索するにはfindpropertyが使える
- ActionScript3では関数外の変数解決には、findpropertyを使っている
- 直接、スコープオブジェクトをインデックスで指定することもできる。関数内で積んだスコープならgetscopeobject、関数外(クロージャ)ならgetoutrobject
- 関数を呼ぶ際はcallproperty、値を取得する場合はgetpropertyがさらに必要
Schemeでの使用方法
Schemeで使う場所
- 変数参照: プロパティの値を取得する
- 関数呼び出しの関数の名前解決: 取得して呼ぶのではなく、直接呼びだい
- let: スコープを追加する
- define: 現在のスコープに名前を追加する
迷っていること
- できればfindpropertyよりも、自分でなんとかできるgetscopeobjectを使いたい
- 変数が関数内かどうかの判断が必要になる
- 関数呼び出しと変数参照で共通のコードが存在するので、統合したい