昨天我回顾了 Swift 中的一段代码,其中包括这一行:
self.self.someProperty
这让我很惊讶,因为这个词self被保留并用作对当前实例的引用。
起初我用其他语言检查了这种现象,但都给出了错误。这并不奇怪——但是,为什么它能很快编译并运行呢?
其次,我在互联网上搜索了此内容,但没有找到任何相关内容......
Edit我从我的支票中复制了这一点:
self.someProperty//exactly the same as:
self.self.someProperty//or as:
self.self.self.self.self.someProperty
斯威夫特文档 https://developer.apple.com/library/mac/documentation/Swift/Conceptual/Swift_Programming_Language/Methods.html给出某种解释:
类型的每个实例都有一个名为 self 的隐式属性,它与实例本身完全相同.
这很好,并且有部分帮助,但在我看来,这仍然不够
所以我问:
- 为什么它有效?
- 这背后有什么有用的逻辑吗?
这是因为.self
对象的属性就是该对象本身。所以你的第二个self
没有任何改变。
事实上,你可以无限期地延长这个游戏(或者只要你有耐心):
let s = "Hello".self.self.self.self.self.self.self.self
// s is still simply "Hello"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)