There is another case to consider; similar to nil-resettable. Optional only by 
virtue of never being set, but setting nil values is invalid (e.g. 
Process.environment)

> On Sep 19, 2017, at 9:34 AM, Tony Allevato via swift-evolution 
> <[email protected]> wrote:
> 
> There have been a couple times where I've wanted something like this:
> 
> 1) A nil-resettable property without having to resort to making it an IUO. It 
> would be nice to have the setter able to take a T? but the getter return T, 
> and the setter would provide a default value in the event that it receives 
> nil.
> 
> 2) Once I was writing an API that would keep an array of things in a 
> property, but I also wanted a shorthand version where the user could set it 
> with a single value and have the setter transform that into the array 
> internally. Looking back though, that's not really defensible; it's easy 
> enough for the call site to just add two characters and write "foo.property = 
> [x]", and I probably wouldn't stand by that example today.
> 
> 
> On Tue, Sep 19, 2017 at 8:16 AM Nevin Brackett-Rozinsky via swift-evolution 
> <[email protected] <mailto:[email protected]>> wrote:
> This may sound rather strange in the abstract, but recently I have 
> encountered two situations where I would like to have a setter that accepts a 
> different type than the getter returns.
> 
> In the first, the getter returns Foo and the setter should accept “@escaping 
> @autoclosure () -> Foo”, so that the expression assigned to the property is 
> not evaluated until it is needed. (The closure is stored in a private 
> property, which the getter evaluates then caches the result.)
> 
> In the second, I want a subscript whose getter returns a concrete type (in my 
> case, subscripting a matrix by row returns an ArraySlice<Element>) while the 
> setter can accept something more generic (any kind of Collection with the 
> correct Element type).
> 
> Thoughts?
> 
> Nevin
> _______________________________________________
> swift-evolution mailing list
> [email protected] <mailto:[email protected]>
> https://lists.swift.org/mailman/listinfo/swift-evolution 
> <https://lists.swift.org/mailman/listinfo/swift-evolution>
> _______________________________________________
> swift-evolution mailing list
> [email protected]
> https://lists.swift.org/mailman/listinfo/swift-evolution

_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to