Scalaのブロックを省略したい

Ken published on
1 min, 149 words

Categories: Programming

Tags: Scala

Scalaの構文で悩み中。 ブロックを引数に持つ関数を、ブロック無しでも使うことは出来ないのだろうか? (イメージ的にはrubyのNet::HTTP#getに近いかな)

例えば、こんな感じ。

def hoge(n:String)(block:String => Unit=null):Option[String] = {
  println(n)
  if (block != null) block(n)
  return Some(n)
}

val n = hoge("2")
val m = hoge("2") { s=>
  println(s + ":" + s)
}

実際にはこういうことは出来ないらしい。

現実的にはこんな感じ?

def hoge(n:String, block:String => Unit=null):Option[String] = {
  println(n)
  if (block != null) block(n)
  return Some(n)
}

val n = hoge("2")
val m = hoge("2", {s=>
  println(s + ":" + s)
  }
)