> On Mar 3, 2017, at 1:36 PM, Adrian Zubarev via swift-evolution 
> <swift-evolution@swift.org> wrote:
> I actually found the source, and it’s even an official one. :)
> 
> https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Declarations.html#//apple_ref/doc/uid/TP40014097-CH34-ID483
>  
> <https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Declarations.html#//apple_ref/doc/uid/TP40014097-CH34-ID483>
> NOTE
> 
> In a class declaration, the static keyword has the same effect as marking the 
> declaration with both the class and final declaration modifiers.
> It’s overlapping but you might be able to adjust the behavior to cover that 
> in your model as well ;)
> 
Note that is arguably not quite true, depending on one's mental model of class 
properties.

If you think of a class var as being, in essence, an instance property of the 
class object, then a *stored* class var should be a different variable for each 
subclass of the class.  That's a reasonable mental model, and it's consistent 
with the behavior of class methods and so on, for which the Self type changes 
depending on what class you invoked the method on; but it's not trivial to 
implement, and it hasn't yet come up to the top of the priority list, which is 
why we don't currently allow you do define stored class vars.  Anyway, class 
properties are normally overridable in subclasses, just like class methods; a 
final class property can't be overridden, but, if stored, under this model it's 
still a different property for each subclass.

That is conspicuously *not* what a static property of a class is.  A static 
property of a class is basically a property of *that specific class*; it can be 
accessed via a subclass but always yields the same variable, which means that 
in a non-generic context it's essentially a namespaced global.  Now, that's 
what people want and expect from a static variable on a class, and that's why 
we implemented it that way, but it's not at all the same thing as "final class".

John.
> 
> 
> 
> -- 
> Adrian Zubarev
> Sent with Airmail
> 
> Am 3. März 2017 um 18:14:42, Matthew Johnson (matt...@anandabits.com 
> <mailto:matt...@anandabits.com>) schrieb:
> 
>> It would be really helpful if you can find a reference to this somewhere.  
>> If it’s possible to define static in terms of this system also that would be 
>> pretty cool.
> 
> 
> _______________________________________________
> swift-evolution mailing list
> swift-evolution@swift.org <mailto:swift-evolution@swift.org>
> https://lists.swift.org/mailman/listinfo/swift-evolution 
> <https://lists.swift.org/mailman/listinfo/swift-evolution>

_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to