我们有很多博客,其中讨论了Swift和它的精彩之处。他们中的大多数听起来像一个完整的WWDC,并没有以令人筋疲力尽的方式和批判的观点讨论他们的主题。所以这个问题对于自由思考的思想,stackoverflow社区是明确的; - )
在Swift中,我们有像
这样的访问控制机制public private(set) var foo: Foo?
和
private var _foo: Foo?
public var foo: Foo? {
get {
// make some preparing stuff, in another kind of way, as in the setter
return _foo
// make some completing stuff, in another kind of way, as in the setter
}
willSet {
// make some preparing stuff
}
set {
_foo = newValue
}
didSet {
// make some completing stuff
}
OOP中用于此目的的常用方法是
private var foo: Foo?
public getFoo() -> Foo? {
// make some preparing stuff, in the same kind of way, as in the setter
return foo
// make some completing stuff, in the same kind of way, as in the setter
}
private setFoo(foo: Foo) {
// make some preparing stuff
self.foo = foo
// make some completing stuff
}
考虑到以下问题,您如何看待这些机制?
willSet
和didSet
但没有willGet
和didGet
?foo
和_foo
更好的方法吗?public private(set)
提供了良好的访问控制,但在声明类外部输入myInstance.foo =
时,IDE Xcode会向变量显示建议。在分配新值之前,不会显示错误或警告。setter is inaccessible
。在OOP中,通常首先检查可见性。斯威夫特似乎不知道什么是可见性。显然,无法确定myInstance.foo
是否将完成“读取命令”myInstance.foo.bar
或“写入命令”。你怎么看待缺乏有用的代码完成?textField.text = "foo"
)中使用“他们的”方法,而不是WatchKit(textField.setText("foo")
)的UserInterface中最年轻的类?这是前进的一步吗?因此。这些是很多问题,但我认为,至少这些是相关的,以获得概述。我很期待你的方方面面。