是否可以使用 'if-case' 代替具有逗号分隔列表的开关?
Is it possible to use 'if-case' in place of a switch that has a coma delimited list as a case?
Swift 2 引入了 if-case
,这应该是一种更简洁的表达开关的方式,只有少数情况。我想知道是否有一种方法可以将带有逗号分隔列表的 switch 语句表示为 if-case
.
let (a,b) = (1,0)
switch (a,b) {
case (1,0), (0,1), (1,1):
print("true")
default:
print("false")
}
我试过的:
if case (a,b) = (1,0) {
// works
}
if case (a,b) = (1,0), (0,1), (1,1) {
// doesn't
}
这会编译,但 (a,b)
元组的 returns 错误:
if case (a,b) = (1,0),
case (a,b) = (0,1),
case (a,b) = (1,1) {
print("if case true")
} else {
print("if case false")
}
我想看的:
我希望看到一种将上述 switch 语句缩短为单个 if-case
的方法。
我的问题
是否可以使用 if-case
代替具有逗号分隔列表的开关作为案例?
嗯,差不多一个月后。这是我最接近满足逗号分隔列表问题的答案。这实际上满足了相同的要求,但方式不同。
let tuple = (1,0)
if case (0...1, 0...1) = tuple where !(a == 0 && b == 0) { return true }
else { return false }
Swift 2 引入了 if-case
,这应该是一种更简洁的表达开关的方式,只有少数情况。我想知道是否有一种方法可以将带有逗号分隔列表的 switch 语句表示为 if-case
.
let (a,b) = (1,0)
switch (a,b) {
case (1,0), (0,1), (1,1):
print("true")
default:
print("false")
}
我试过的:
if case (a,b) = (1,0) {
// works
}
if case (a,b) = (1,0), (0,1), (1,1) {
// doesn't
}
这会编译,但 (a,b)
元组的 returns 错误:
if case (a,b) = (1,0),
case (a,b) = (0,1),
case (a,b) = (1,1) {
print("if case true")
} else {
print("if case false")
}
我想看的:
我希望看到一种将上述 switch 语句缩短为单个 if-case
的方法。
我的问题
是否可以使用 if-case
代替具有逗号分隔列表的开关作为案例?
嗯,差不多一个月后。这是我最接近满足逗号分隔列表问题的答案。这实际上满足了相同的要求,但方式不同。
let tuple = (1,0)
if case (0...1, 0...1) = tuple where !(a == 0 && b == 0) { return true }
else { return false }