【发布时间】:2011-04-16 07:34:21
【问题描述】:
例如,在toString 方法中,我想提供有关类的惰性val 成员是否已评估的信息,如果是,则打印其值。这可能吗?
【问题讨论】:
-
我害怕这样的回答“没有 API,但你可以使用 Java 反射以某种方式手动测试它……”
-
有。每个懒惰的 member (不同于局部变量)都有一个带有时髦名称的支持字段,它实际上保存了该值,我认为另一个来确定“如果评估”。虽然不确定确切的细节/命名规则。听起来像是一个“有趣”的要求。
-
与“懒惰的成员”打交道总是有问题
-
github.com/scala/scala/blob/master/src/compiler/scala/tools/nsc/… 是完成这项工作的代码。因此,您对skirhiro4chawon 的anwser 的评论是正确的:您需要知道惰性值的顺序才能正确检查位图的值。
-
当然,它总是可以通过编译器插件来完成。
标签: scala lazy-evaluation