Why you have to use `unwrapped optional` at the first place? If you have to use it, it means it could be nil. So it won't conform the protocol, which requires the `value` never nil.
Zhaoxin On Mon, May 29, 2017 at 12:37 PM, Anton Bronnikov via swift-users < swift-users@swift.org> wrote: > Hi All, > > If I have a protocol with a property requirement such as: > > protocol Foo { > var value: Int { get } > } > > > .. and I need to conform to it using an implicitly unwrapped optional like: > > struct Bar : Foo { > let value: Int! = nil > } > > > .. then the compiler fails with an error: > > *Playground execution failed: error: scratchpad.playground:5:8: error: > type 'Bar' does not conform to protocol 'Foo'* > *struct Bar : Foo {* > * ^* > > *scratchpad.playground:2:9: note: protocol requires property 'value' with > type 'Int'; do you want to add a stub?* > * var value: Int { get }* > * ^* > > *scratchpad.playground:6:9: note: candidate has non-matching type 'Int!'* > * let value: Int! = nil* > * ^* > > Technically, I understand why the error, and currently work around it with > a cumbersome: > > struct Bar : Foo { > var value: Int { return _value! } > let _value: Int? = nil > } > > > However, I keep wondering - would it not be making sense to accept > implicitly unwrapped optionals as a conformance to be base-type > requirements? It sort of works just like that in all other parts of the > language. > > Or in other words, is this by design, or should I probably create an issue > for this? > > Thank you. > Cheers, > Anton > > P.S. The example is oversimplified for the sake of clarity, in practice > the property just has to be an optional - implicitly unwrapped or not - > because it’s a part of the composite that holds unowning reference to its > container object. > > > _______________________________________________ > swift-users mailing list > swift-users@swift.org > https://lists.swift.org/mailman/listinfo/swift-users > >
_______________________________________________ swift-users mailing list swift-users@swift.org https://lists.swift.org/mailman/listinfo/swift-users