イテレータ
100.times{ |i|
println(i.to_s);
}
という要素繰り返し構文があります。
Rubyではメソッドにブロックを渡す内部イテレータ方式ですが、XtalではメソッドがIteratorオブジェクトを返し、それを反復するという外部イテレータ方式を採用しています。
ですので次のようなことが出来ます。
iter: 100.times; // 0〜99を繰り返すイテレータオブジェクトを変数に入れておける。 // 反復開始 iter{ // ブロックで暗黙的に定義されるitをプリントする。 it.p; }
関数呼び出しを "式()" で行うように、イテレーションを "式{}" で行うわけです。
Xtalにopenというファイルを開く関数を追加しましたが、これもRubyのようにブロックで記述できます。
open("out.txt", "w"){ // it.write(); まだFileStreamクラスにwriteメソッドが無い… // ブロックから抜け出すと自動的にファイルはクローズされる。 } else{ // elseを付けられる // open出来なかった場合に通る }