是否可以使用单个关键字使scala对象中的所有值变为惰性
发布时间:2020-12-16 18:23:52 所属栏目:安全 来源:网络整理
导读:或者 scala对象中的val是否默认为lazy? 无论如何,如果有必要通过使用lazy在一个懒惰的对象中声明一个val,是否可以做类似的事情 lazy object SomeObject 或者(就像你在c中所做的那样) object A {lazy: val a val b ...} 因为我想要懒惰而不必重新标记我所有
或者
scala对象中的val是否默认为lazy?
无论如何,如果有必要通过使用lazy在一个懒惰的对象中声明一个val,是否可以做类似的事情 lazy object SomeObject 或者(就像你在c中所做的那样) object A { lazy: val a val b ... } 因为我想要懒惰而不必重新标记我所有的vals lazy val 解决方法
回答你的第一个问题(“scala对象中的val是默认的懒惰吗?”):不,不完全是,但是对象本身有点懒,可能很懒.从
the Scala language specification的5.4(“对象定义”):
所以,例如,如果我们有这三个对象: object X { val answer = { println("Here's X's answer!"); 42 } } object Y { lazy val answer = { println("Here's Y's answer!"); 1 } } object Z extends App { println("Here we go.") println(X) println(Y) println(X.answer) println(Y.answer) } 然后当我们运行Z时,我们看到以下内容: Here we go. Here's X's answer! X$@38d24866 Y$@f1aa6ce 42 Here's Y's answer! 1 所以X中的val不是懒惰的,但是直到我们第一次使用X时它才被评估. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |