昨天我回顾了一段 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 给出某种解释:
Every instance of a type has an implicit property called self, which is exactly equivalent to the instance itself.
这很好并且有部分帮助,但我认为它仍然不够
所以我要问:
- 为什么有效?
- 这背后有什么有用的逻辑吗?
最佳答案
因为一个对象的.self
属性就是那个对象本身。所以你的第二个 self
没有任何改变。
事实上,您可以无限期地延长这个游戏(或者只要您有耐心):
let s = "Hello".self.self.self.self.self.self.self.self
// s is still simply "Hello"
关于swift - 为什么 'self.self'在swift中编译运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34499890/