- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
似乎惰性初始化很棒。我理解这个概念并测试了我的代码,我没有看到任何滞后。那么问题来了,为什么不总是使用惰性初始化呢?这有什么缺点?我没有意识到什么?
最佳答案
考虑这个惰性变量
的例子:
struct S {
lazy var lazyVar: Int = { /* compute some value */ 0 }()
}
幕后真正发生的事情是这样的:
struct S {
var _lazyVar: Int? = nil
var lazyVar: Int {
mutating get {
if let existingValue = _lazyVar {
return existingValue
}
else {
let newlyComputedValue = /* compute some value */ 0
_lazyVar = newlyComputedValue
return newlyComputedValue
}
}
}
}
如您所见,lazyVar
的每次访问都需要一个分支,以检查是否已经有一个值,或者是否有必要第一次计算一个值。这增加了开销,很容易超过通过简单(快速)推导延迟评估值的好处。
关于swift - 惰性初始化听起来很好用。为什么不总是默认使用惰性初始化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46335020/
我正在尝试执行 vagrant up 但一直遇到此错误: ==> default: IOError: [Errno 13] Permission denied: '/usr/local/lib/pyt
我在容器 div 中有一系列动态创建的不同高度的 div。 Varying text... Varying text... Varying text... Varying text.
通过 cygwin 运行 vagrant up 时遇到以下错误。 stderr: /bin/bash: /home/vagrant/.ansible/tmp/ansible-tmp-14872260
今天要向小伙伴们介绍的是一个能够快速地把数据制作成可视化、交互页面的 Python 框架:Streamlit,分分钟让你的数据动起来! 犹记得我在做机器学习和数据分析方面的毕设时,
我是 vagrant 的新手,正在尝试将第二个磁盘添加到我正在用 vagrant 制作的虚拟机中。 我想出了如何在第一次启动虚拟机时连接磁盘,但是当我关闭机器时 然后再次备份(使用 'vagrant
我是一名优秀的程序员,十分优秀!