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

Reply via email to