匿名関数を渡す
rubyのブロックのように匿名関数を渡すこともできます。
object Timer { def oncePerSecond(callback: () => unit) { while (true) { callback(); Thread sleep 1000 } } def main(args: Array[String]) { oncePerSecond(()=> println("time flies like an arrow...") ) } }
うーん、色がつかないのが腹が立つ。
瀧内さんとこでscalaサポートしてもらって、そっちで書くか。(おい)
rubyだったら
def once_per_second(&block) while (true) block.call sleep 1 end end once_per_second{puts "time flies like an arrow..."}
うーん、うっとり。いかにもrubyらしいコード。
しっかし、scalaでもこんなrubyのブロックみたいなことをサポートしたんですね。
javaがわからないので、どうやって実装しているかは気にしないことにします。