将代码块放入getOrElse方法的语法是什么?

时间:2013-08-09 04:36:00

标签: scala

我想在getOrElse方法中放置一个代码块,但我不能:

   //1
    getOrElse(() => {
      println("id is not found: " + x.Id)
      new MyClass(-1)
   })

   //2
    getOrElse {
      println("id is not found: " + x.Id)
      new MyClass(-1)
    }

2 个答案:

答案 0 :(得分:2)

对我来说很好:

scala> None getOrElse { println("AAA")
     | 5 }
AAA
res1: Int = 5

BTW,{ () => ... }是一个函数,从空参数设置为某个东西。

答案 1 :(得分:0)

可能在这里你有问题:

new MyClass(-1)

我看不到很多代码但这个问题。 看到这个代码工作正常:

import scala.io.Source

class Test(x: Int) {
  override def toString = "In test "+x
}
object Main extends App {

  val test = None
  val b = test.getOrElse({
    println("not found")
    new Test(-1)
  })
  println(b.toString)

}