加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 为什么要重新实现lazy?

发布时间:2020-12-16 09:15:52 所属栏目:安全 来源:网络整理
导读:我在Twitter的有效 Scala页面上阅读了关于 Lazyness [sic]的部分,其中包括这个建议(重点是我的): Use lazy fields for this purpose [computing and caching values on-demand], but avoid using lazyness when lazyness is required by semantics . In the
我在Twitter的有效 Scala页面上阅读了关于 Lazyness [sic]的部分,其中包括这个建议(重点是我的):

Use lazy fields for this purpose [computing and caching values on-demand],but avoid using lazyness when lazyness is required by semantics. In these cases it’s better to be explicit since it makes the cost model explicit,and side effects can be controlled more precisely.

我不明白为什么会这样做.为什么在语义需要懒惰的情况下避免使用懒惰关键字(这意味着您的程序中的正确性是必要的,而不仅仅是将其用作优化).我不知道如何编写自己的懒惰初始化代码会使懒惰比使用语言中内置的懒惰关键字更加清晰!我知道有一些额外的开销涉及到使懒惰字段线程安全,但我不认为这是他们在这里得到的

这个关于使用我完全失踪的懒惰的指导方针有一些隐藏的优点,还是只是忽略这个建议呢?

解决方法

编辑:我现在不再确定建议是什么,所以在批评Twitter的建议时,请点下面的一些盐. (但下面我给自己的建议)

我也不同意建议,但我(过去)认为他们的观点是懒惰太容易了.您为访问懒惰值而支付性能损失,但您不会注意到使用点,您正在执行任何操作,除了访问正常值.当然,这是一件让懒惰工具如此有用的事情:你可以在懒惰的行为之间切换,而不是改变你的界面.但是如果人们以懒惰方式随机乱码,那么在关键区域的表现可能会受到损害(假设它不超过懒惰评估),初始化顺序将难以预测(尤其重要的是,如果您执行很多副作用),等等.

即使如此,我认为明确更糟糕的是,你必须要有纪律.如果你不能指望任何文件或纪律,也许最好是完全避免它.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读