0

我想将一段代码放入 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)
    }
4

2 回答 2

3

对我来说很好:

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

顺便说一句,{ () => ... }是一个从空参数集到某物的函数。

于 2013-08-09T04:40:04.427 回答
0

可能在这里你有问题:

新的 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)

}
于 2013-08-09T16:02:34.500 回答