[swift-evolution] [discussion] Class stored properties?

Christopher Kornher ckornher at me.com
Wed Aug 9 16:43:30 CDT 2017


Class variables are not common, but they are the most natural way to implement class-specific functionality. Off the top of my head, I have used class variables for:

1) Custom allocation schemes, e.g. pools, LRU implementations
2) Diagnostics, e.g. counting the number of instances of a given class
3) Plugin-in functionality, e.g. customizing behavior of a class at runtime. In Swift, the variables would be closures.


You can argue that class variables these are not strictly necessary for these tasks, but I have found them to be handy, including during development and “Bring-up"

- Chris




> On Aug 9, 2017, at 12:52 PM, Mathew Huusko V via swift-evolution <swift-evolution at swift.org> wrote:
> 
> I don't follow. What's a singleton/how? If you mean my example, the whole point/need for the feature is so it's not. I want `.value` to be unique storage for each subclass.
> 
> On Wed, Aug 9, 2017 at 7:09 PM, Robert Widmann <rwidmann at apple.com <mailto:rwidmann at apple.com>> wrote:
> This is a singleton, it just happens to be in class scope.
> 
> ~Robert Widmann
> 
> > On Aug 9, 2017, at 3:55 AM, Mathew Huusko V via swift-evolution <swift-evolution at swift.org <mailto:swift-evolution at swift.org>> wrote:
> >
> > Curious if class stored properties have ever been discussed (doesn't seem so..)?
> >
> > Also, assuming no, and assuming there's a good reason no/they're not coming anytime soon, what are some patterns people have been using in their place? I was considering something like..
> >
> > class SomeClass {
> >     private static var _classValues = [SomeClass.Type: Int]()
> >
> >     class var value: Int {
> >         get { _classValues[self] }
> >         set { _classValues[self] = newValue }
> >     }
> > }
> >
> > .. but then I remembered types aren't hashable yet either (so I guess I need to stringify it first).
> > _______________________________________________
> > swift-evolution mailing list
> > swift-evolution at swift.org <mailto:swift-evolution at swift.org>
> > https://lists.swift.org/mailman/listinfo/swift-evolution <https://lists.swift.org/mailman/listinfo/swift-evolution>
> 
> 
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20170809/7227637e/attachment.html>


More information about the swift-evolution mailing list