変数回りの整理

変数回りの仕組みで、頭がごちゃごちゃしてきたのでちょっと整理してみる。

実現方法

  • 変数はAVM2では、スコープオブジェクトのプロパティで実現する
  • スコープは、いくつか積み重ねれる。スコープチェーン?
  • スコープチェーンからプロパティを持つオブジェクトを検索するにはfindpropertyが使える
  • ActionScript3では関数外の変数解決には、findpropertyを使っている
  • 直接、スコープオブジェクトをインデックスで指定することもできる。関数内で積んだスコープならgetscopeobject、関数外(クロージャ)ならgetoutrobject
  • 関数を呼ぶ際はcallproperty、値を取得する場合はgetpropertyがさらに必要

Schemeでの使用方法

Schemeで使う場所

  • 変数参照: プロパティの値を取得する
  • 関数呼び出しの関数の名前解決: 取得して呼ぶのではなく、直接呼びだい
  • let: スコープを追加する
  • define: 現在のスコープに名前を追加する

迷っていること

  • できればfindpropertyよりも、自分でなんとかできるgetscopeobjectを使いたい
  • 変数が関数内かどうかの判断が必要になる
  • 関数呼び出しと変数参照で共通のコードが存在するので、統合したい