属性 闭包和 Swift 中的方法有什么区别?
What is the difference between property closure and a method in Swift?
class Bartek {
var name: String = "Bartek"
var description: () -> String = {
return "Person name is" + self.name
}
func description() -> String {
return "Person name is" + name
}
}
现在我可以像那样使用它了:
var bartek = Bartek()
bartek.description()
实际上我用哪个?什么更好? 属性 闭包或方法?什么时候使用它们?
- 属性 闭包可以是可选的和可赋值的。示例:
var description: (() -> String)?
- 属性 闭包可以捕获变量(如示例中的
self
)。你在那里造成了内存泄漏。
- 如果您实现定义方法的协议,则必须符合方法,而不是 属性 闭包。
对策略模式使用属性闭包,您的对象的用户可以在其中更改行为。在几乎任何其他情况下都使用方法。
如果是一些(或多或少)静态信息,请使用 属性。使用一个函数来指示某些东西是计算出来的。
class Bartek {
var name: String = "Bartek"
var description: () -> String = {
return "Person name is" + self.name
}
func description() -> String {
return "Person name is" + name
}
}
现在我可以像那样使用它了:
var bartek = Bartek()
bartek.description()
实际上我用哪个?什么更好? 属性 闭包或方法?什么时候使用它们?
- 属性 闭包可以是可选的和可赋值的。示例:
var description: (() -> String)?
- 属性 闭包可以捕获变量(如示例中的
self
)。你在那里造成了内存泄漏。 - 如果您实现定义方法的协议,则必须符合方法,而不是 属性 闭包。
对策略模式使用属性闭包,您的对象的用户可以在其中更改行为。在几乎任何其他情况下都使用方法。
如果是一些(或多或少)静态信息,请使用 属性。使用一个函数来指示某些东西是计算出来的。