[swift-evolution] Evaluating the case of an enum with associated values as a bool
Ethan Diamond
ethanjdiamond at gmail.com
Tue Dec 19 17:17:16 CST 2017
Hello everyone,
One major pain point I've run into with Swift is the inability to evaluate
the case of an enum that has associated values in a way that just returns a
bool. We've been given the ability in a switch statement:
enum Enum {
case a(param: String)
case b(param: String)
}
let enumeration: Enum = a(param: "Hi")
switch enumeration {
case a:
// Do something
case b:
// Do something
}
We'e been given the ability in the context of an if statement:
enum Enum {
case a(param: String)
case b(param: String)
}
let enumeration: Enum = a(param: "Hi")
if case .a = enumeration {
// Do something
}
But without a basic was of getting a bool for if an enum is a given case,
here's a list of things I can't do:
*Where statements:*
enum Enum {
case a(param: Enum2)
case b(param: Enum2)
}
enum Enum2 {
case c(param: String)
case d(param: String)
}
let enumeration: Enum = a(param: "Hi")
switch enumeration {
case a(let inner) where [INNER CASE IS .c]
}
---------
*Filter an array for a certain case:*
Expertly explained by Erica Sadun here:
http://ericasadun.com/2017/01/31/challenge-filtering-associated-value-enumeration-arrays/
---------
*Nicely set a UIButton to hidden if an enum is a certain case:*
enum State {
case `default`
case searching(results: [Result])
}
myButton.isHidden = [STATE IS .searching]
---------
I've run into this issue a ton of times because I tend to represent my
views a State enums. I haven't seen anything on the board for plans for
solving this issue, thought. Has there been any discussion about addressing
it? Ideally I'd be able to do this:
enum Enum {
case a(param: String)
case b(param: String)
}
let enumeration: Enum = a(param: "Hi")
case .a = enumeration // Bool
case .a(let param) = enumeration // Bool, assigns "Hi" to "param"
Thanks!
Ethan
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20171219/f47f9889/attachment.html>
More information about the swift-evolution
mailing list