コードのブロックを 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)
}
コードのブロックを 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)
}
私にとってはうまくいきます:
scala> None getOrElse { println("AAA")
| 5 }
AAA
res1: Int = 5
ところで、{ () => ... }
何かに設定された空の引数からの関数です。
おそらくここに問題があります:
新しい 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)
}