我在使用选项和懒惰评估时遇到了一个小问题。 例如,当我在REPL中尝试此代码时,我得到了以下内容
lazy val a = 3+3
REPL说:
a: Int = <lazy>
这很酷,但是..
val b = Some(a)
REPL说:
b: Some[Int] = Some(6)
在将其置于选项之前,某些必须评估参数 :(
也
val b = Box !! a
评估为
b: net.liftweb.common.Box[Int] = Full(6)
同样的效果:(
是否有任何解决方法,我只需要一个带有懒惰val的选项,如果我可以实现以下它会很棒
b: Some[Int] = Some(<lazy>)
注意:
我在询问之前做了一些研究,我发现 scalaz 有一些叫做 LazyOption 的东西,很有趣,但我无法使用它:(
任何帮助!
答案 0 :(得分:4)
执行:val a = Some(b)
时,由于b
需要值,因此您要强制a
进行评估。如果您不希望延迟评估,则还需要使b
懒惰。
scala> lazy val b = Some(a)
b: Some[Int] = <lazy>