今日のニワン語メモ

いつもバグ変な仕様についてのメモばっかりだとアレなのでたまには役立つメモを。

■戻り値を返す関数
関数は最後に実行した式の値を戻り値として返す

例)
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と併用する?