[swift-evolution] [proposal] Treat (case .Foo = bar) as a Boolean expression
Vladimir.S
svabox at gmail.com
Wed May 11 07:15:54 CDT 2016
Btw, do we have now any proposal now for enums improvement in Swift3 ?
On 11.05.2016 6:31, Chris Lattner via swift-evolution wrote:
>
>> On May 10, 2016, at 4:33 AM, Sam Dods via swift-evolution
>> <swift-evolution at swift.org <mailto:swift-evolution at swift.org>> wrote:
>>
>> I propose that *(case .Foo = bar)* should be treated as an expression
>> with a Boolean value, so the result can be set to a variable or returned
>> from a method.
>
> I agree that this is an important use case that Swift doesn’t serve well
> right now, but I don’t think this is the right way to go.
>
>> Considering the following enumeration:
>>
>> *enum Bar {*
>> * case foo(name: String)*
>> * case notFoo*
>> * case unknownFoo*
>> *}*
>
> One of the things we’ve discussed in the past is that we could have enums
> automatically “synthesize” instance members for projecting cases as
> optional values or bools. For example, the above enum could be compiled
> into the equivalent of:
>
> extension Bar {
> func getAsFoo() -> String? { … }
> var isNotFoo : Bool { … }
> var isUnknownFoo : Bool { … }
> }
>
> Then you could just use:
>
> if someBar.isUnknownFoo { … }
> if someBar.isFoo != nil { … }
> if let name = someBar. getAsFoo() {... }
> someBar. getAsFoo()?.doThing()
>
> etc. There is a question of naming, and getting the details right, of course.
>
> -Chris
>
>
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution
>
More information about the swift-evolution
mailing list