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@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@swift.org > https://lists.swift.org/mailman/listinfo/swift-evolution _______________________________________________ swift-evolution mailing list swift-evolution@swift.org https://lists.swift.org/mailman/listinfo/swift-evolution