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

标签 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 给出某种解释:

Every instance of a type has an implicit property called self, which is exactly equivalent to the instance itself.

这很好并且有部分帮助,但我认为它仍然不够

所以我要问:

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

最佳答案

因为一个对象的.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/

相关文章:

ios - 如何在 UITextField (swift) 中启用清除按钮操作?

java - 在 super() 构造函数中获取子类名称

c++ - 动态绑定(bind)的条件究竟是什么?

ios - iVars 引用强、弱还是什么?

ios - UNNotificationRequest 每天在特定时间发送本地通知

swift - Swift 中的 NSURLRequest 和 URLRequest 有什么区别?

ios - 在 swift 类中实现 AsyncSocket 回调

oop - scala:如何建模基本的父子关系

python - Python中声明实例变量的两种方式?

ruby-on-rails - 在 Ruby 中,如何编写一个方法来显示任何对象的实例变量名称及其值