[swift-evolution] ability to derive a class from a struct or other value type

Mike Kluev mike.kluev at gmail.com
Wed Jun 21 14:54:56 CDT 2017


"C() is S" shall be false, and you won't be able passing C where S is
required.

you will be able passing c.`struct` though (or some better equivalent name).
passing c.`struct` would be no different than it is now should you
implement this class manually with explicitly defined var for S.

Mike


On 21 June 2017 at 22:08, Charlie Monroe <charlie at charliemonroe.net> wrote:

> What happens when you pass C somewhere where S is required? Is that an
> error?
>
> C() is S // Is this true or false?
>
>
> If it's true, then you can pass a mutable instance somewhere let is used,
> if it's false, then it is really confusing...
>
>
> > On Jun 21, 2017, at 8:29 PM, Mike Kluev via swift-evolution <
> swift-evolution at swift.org> wrote:
> >
> > sorry if this was already discussed.
> >
> > proposing an ability to derive a class from a struct or another value
> type (e.g. enum).
> > would make it easy to wrap value type in a reference type without
> explicit code:
> >
> > struct S {
> >     var v: Int
> >     func method() {}
> >     static staticMethod() {}
> > }
> >
> > class C: S {
> >       func otherMethod() {}
> >       // ...
> > }
> >
> > let c = C()
> >
> > c.v = 1
> > c.method()
> > C.staticMethod()
> > c.otherMethod()
> >
> > shall work as if i had a struct variable and all struct functions
> implemented in a class calling through that var:
> >
> > pseudo code:
> >
> > class C {
> >
> > // auto generated internally:
> >     var `struct`: S
> >
> >     func method() {
> >         `struct`.method()
> >     }
> >     static staticMethod() {
> >         S.staticMethod()
> >     }
> > //---
> >
> >       func otherMethod() {}
> > }
> >
> > would also be nice to have ability to overload struct's methods:
> >
> > class C: S {
> >     override func method() {
> >         super.method()
> >     }
> > }
> >
> > and have struct initializators inherited:
> >
> > let c = C(struct initialization params)
> >
> > thoughts?
> >
> > Mike
> >
> > _______________________________________________
> > 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/20170621/f8fa0985/attachment.html>


More information about the swift-evolution mailing list