为什么 'self.self' 在 swift 中编译并运行?

2024-05-09

昨天我回顾了 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 的隐式属性,它与实例本身完全相同.

这很好,并且有部分帮助,但在我看来,这仍然不够

所以我问:

  1. 为什么它有效?
  2. 这背后有什么有用的逻辑吗?

这是因为.self对象的属性就是该对象本身。所以你的第二个self没有任何改变。

事实上,你可以无限期地延长这个游戏(或者只要你有耐心):

let s = "Hello".self.self.self.self.self.self.self.self
// s is still simply "Hello"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 'self.self' 在 swift 中编译并运行? 的相关文章

随机推荐