読者です 読者をやめる 読者になる 読者になる

匿名関数を渡す

scala ruby

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がわからないので、どうやって実装しているかは気にしないことにします。