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
<[email protected] <mailto:[email protected]>> 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
[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