ユーザー定義のif文
Xtalはブロックを使うことで、if文とほとんど同じ機能を書くことが出来ます。
If: class{ _cond; initialize: method(cond){ _cond = cond; } block_first: method{ return _cond ? this : null; } block_next: method{ return null; } } If(n < 20){ "true".p; } else{ "false".p; }
ループ文につけられるelse節の意味をPythonと変え、nobreak節を導入したのは、これを正常に動かすためです。
もし、else節をPythonと同じ意味にしてた場合、次のように書かなければなりませんでした。
If(n < 20){ "true".p; break; // elseに行かないようにおまじない・・・ } else{ "false".p; }
さて、こんな擬似if文が書けて何が嬉しいんでしょうか?
一例としては、次のようなメソッドで役立つんではないかと考えてます。
// 現在のMutexクラスにtry_lockは無いんですけどね。 mutex.try_lock{ // lock成功 } else{ // lock失敗 }