Yesterday I reviewed a piece of code in Swift which included this line:
self.self.someProperty
Which surprised me, because the word self is reserved and used as a reference to the current instance.
At first I checked for that phenomenon in other languages, but all gave errors. Which wasn't a surprise - but still, why in swift does it compile and run?
Second I searched in the internet about this and haven't found anything relevant...
Edit I reproduced that and from my checks:
self.someProperty//exactly the same as:
self.self.someProperty//or as:
self.self.self.self.self.someProperty
Swift documentation gives some sort of explanation:
Every instance of a type has an implicit property called self, which is exactly equivalent to the instance itself.
Which is good and partly helpful, but the way I see it it's still not enough
So I'm asking:
It's because the .self
property of an object is that object itself. So your second self
changes nothing.
You could, in fact, extend this game indefinitely (or as long as your patience holds out):
let s = "Hello".self.self.self.self.self.self.self.self
// s is still simply "Hello"
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With