[swift-evolution] ability to derive a class from a struct or other value type
Charlie Monroe
charlie at charliemonroe.net
Wed Jun 21 14:08:23 CDT 2017
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
More information about the swift-evolution
mailing list