我在if case语句中搜索与多个case进行模式匹配的语法.这个例子是这样的:
enum Gender {
case Male, Female, Transgender
}
let a = Gender.Male
Run Code Online (Sandbox Code Playgroud)
现在我想检查,如果是.Male或.Female.但我想避免使用开关.但是switch语句是这样的:
switch a {
case .Male, .Female:
// do something
}
Run Code Online (Sandbox Code Playgroud)
如果是这样的话可以写这个吗?我会期待这一点,但它不起作用:(
if case .Male, .Female = a {
}
Run Code Online (Sandbox Code Playgroud)
Cod*_*ent 14
一个简单的数组就可以了:
if [.Male, .Female].contains(a) {
print("Male or female")
} else {
print("Transgender")
}
Run Code Online (Sandbox Code Playgroud)
我对Swift推断类型的能力感到惊讶.在这里,它得到了.Male并且.Female属于性别类型a.
对于模式匹配,你所描述的还行不通。对于你的情况,你可以这样做。但如果无法转换为hashValue. 那么这也行不通。
// Using Pattern Matching for more than one case.
if case 0...2 = a.hashValue {
print("Hello")
}
//Normal if else
if a == .Male || a == .Female {
print("Hello")
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6508 次 |
| 最近记录: |