Swift: var a: Int { calculateValue() } 和 var b = { calculateValue() }() 之间的区别
Swift: Difference between var a: Int { calculateValue() } and var b = { calculateValue() }()
我正在尝试了解
之间的区别
var a: Int { calculateValue() }
和
var b = { calculateValue() }()
我有点困惑,但我想我已经掌握了基础知识,所以我只是想确保我做对了:第一个是计算出来的 属性 会 运行 calculateValue() 每次我在某处使用 a 并使用该值,而第二个只是在初始化时将闭包的值分配给 b?
谢谢
一个
var a: Int { calculateValue() }
是一个计算出来的 属性,相当于:
var a: Int {
get { calculateValue() }
}
每次访问 a
时都会调用计算体,这意味着每次访问都会调用 calculateValue
)
B
{ calculateValue() }
是类型 () -> Int
的闭包,其主体调用 calculateValue
。尾随的 ()
调用该闭包,这使其成为立即计算的闭包。
结果(分配给存储的 属性 var b
)只是一个 Int
(不在 () -> Int
,因为已经调用了闭包)
我正在尝试了解
之间的区别var a: Int { calculateValue() }
和
var b = { calculateValue() }()
我有点困惑,但我想我已经掌握了基础知识,所以我只是想确保我做对了:第一个是计算出来的 属性 会 运行 calculateValue() 每次我在某处使用 a 并使用该值,而第二个只是在初始化时将闭包的值分配给 b?
谢谢
一个
var a: Int { calculateValue() }
是一个计算出来的 属性,相当于:
var a: Int {
get { calculateValue() }
}
每次访问 a
时都会调用计算体,这意味着每次访问都会调用 calculateValue
)
B
{ calculateValue() }
是类型 () -> Int
的闭包,其主体调用 calculateValue
。尾随的 ()
调用该闭包,这使其成为立即计算的闭包。
结果(分配给存储的 属性 var b
)只是一个 Int
(不在 () -> Int
,因为已经调用了闭包)