昨天我查看了Swift中的一段代码,其中包含以下行:
self.self.someProperty
让我感到惊讶,因为 self 这个词被保留并用作对当前实例的引用。
起初我用其他语言检查过这种现象,但都犯了错误。这不是一个惊喜 - 但仍然,为什么在swift编译和运行?
其次,我在互联网上搜索了这个,但没有发现任何相关内容......
修改 我从我的支票中复制了这些:
self.someProperty//exactly the same as:
self.self.someProperty//or as:
self.self.self.self.self.someProperty
Swift documentation 给出了某种解释:
一个类型的每个实例都有一个名为self的隐式属性,它与实例本身完全等效。
哪个好,部分有用,但我认为它的方式还不够
所以我问:
答案 0 :(得分:3)
是的,不管有多少。你自己拥有一根弦后,它仍然只是自己
答案 1 :(得分:2)
这是因为对象的.self
属性就是该对象本身。所以你的第二个self
什么都没改变。
let s = "Hello".self.self.self.self.self.self.self.self
// s is still simply "Hello"