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 に答える