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
[email protected]
https://lists.swift.org/mailman/listinfo/swift-users