untilを使った繰り返し
処理をn回繰り返したいときは「until」が使えます。
// 処理を10回繰り返したい for ( i <- 0 until 10 ) println( i )
実行結果です。
0 1 2 3 4 5 6 7 8 9
「0 until 10」を最初見たとき「なんだこれ?」と思ったんですが(そういう演算子があるのかなーとか思った)、どうもRichInt型の値「0」の関数「until」を引数「10」で呼び出しているらしい。引数つきの関数って「<関数名>(引数)」形式じゃないと実行できないんじゃなかったっけ?と思って試してみると、
- 普通の関数はやはり実行できない。
- オブジェクトのメソッド呼び出しで、引数が1つの場合「<オブジェクト名> <関数名> <引数>」で実行できた。
// クラス class Var { // 引数を1つ受け付ける関数 def foo(a:String):String = a+a // 引数を複数受け付ける関数 def hoge(a:String, b:String):String = a+b } var v = new Var println( v.foo("x") ) println( v foo "x" ) // 引数が1つの場合、「<オブジェクト名> <関数名> <引数>」形式で実行できる。 //println( v hoge "x" "y" ) // これはコンパイルエラー // 普通の関数 def foo( a:String ):String = a+a println( foo("x") ) //println( foo "x" ) // これはコンパイルエラー
実行結果です。
xx xx xx
仕様書を探してみたけど、そんな説明は見つけられなかった。どこかに記載があるのかな。んー。