[swift-evolution] Unify `static` and `class` keywords

Matthew Johnson matthew at anandabits.com
Mon Dec 7 13:34:22 CST 2015


> One important difference between “static” and “class” on a class is the behavior of storage.  In principle, a static variable in a class is just a rescoped global (although it is unclear how this is affected by generics).  A class variable in a class is conceptually a member of the class, and subclasses should get a separate copy.

I understand that this is the case in general, but is it still the case when a class variable is marked as final in its initial declaration?

If class variables do behave differently even when declared final I wonder whether the use cases for this behavior are compelling enough to justify the conceptual complexity of two different keywords.  I would be very interested in seeing examples of using a final class variable where separate storage for each subclass is desirable and useful.  


More information about the swift-evolution mailing list