[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