为什么&self; self.self'编译并快速运行?

时间:2015-12-28 19:58:18

标签: swift oop instance-variables self

昨天我查看了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的隐式属性,它与实例本身完全等效

哪个好,部分有用,但我认为它的方式还不够

所以我问:

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

2 个答案:

答案 0 :(得分:3)

是的,不管有多少。你自己拥有一根弦后,它仍然只是自己

答案 1 :(得分:2)

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

事实上,你可以无限期地扩展这个游戏(或者只要耐心等待):

let s = "Hello".self.self.self.self.self.self.self.self
// s is still simply "Hello"