いつもバグ変な仕様についてのメモばっかりだとアレなのでたまには役立つメモを。
■戻り値を返す関数
関数は最後に実行した式の値を戻り値として返す例) 0::/def(tasu(a, b), a + b) 0::/c = tasu(1, 2) →cに3が代入される ちなみに 0::/def(tasu(a, b), ret := a + b; ret) 0::/c = tasu(1, 2) でも同様。こっちの方が応用が効く
■オブジェクトの作成
オブジェクトには任意のフィールド、メソッドを追加できる例1)フィールドの追加 0::/a = drawText('') 0::/a.b = 1 →aオブジェクトにbフィールドが追加され、1が代入される ちなみにフィールドにオブジェクトを代入することも可 0::/a = drawText('') 0::/a.b = drawShape(width:0) →aオブジェクトにbフィールドが追加され、drawShapeオブジェクトが代入される 既に存在するフィールド名を使用しないように注意 例2)メソッドの追加 0::/a = drawText('') 0::/a.def(b(z), dt('x = ' + x + ', y = ' + y + ', z = ' + z)) 0::/a.b(1) →「x = 0, y = 0, z = 1」が出力される クラスではなくインスタンスに対しメソッドを定義する さらにインスタンス生成後でしか定義できない →使い道が難しい。cloneと併用する?