假设我有一个需要检查的条件矩阵:
let one: String? = "one"
let two: String? = nil
func test() {
if one == nil && two == nil {
print("neither are valid")
} else if one == nil {
print("one is nil")
} else if (two == nil) {
print("two is nil")
} else {
print("\(one) and \(two) are valid")
}
}
是否有 Swift 语言的功能可以让我写得更干净、更“像 Swift 一样”?相同的语法是否可以很好地扩展到一组三维条件?
我知道使用 guard
,我可以在继续之前检查两个值是否有效,但是我需要根据一个、两个或两个都不为 nil 来执行某些操作,并且这显然会导致一些误报(守卫希望在继续之前两者都有效):
guard let one = one, let two = two else {
return
}
if one == nil {
print("one is nil")
} else if (two == nil) {
print("two is nil")
} else {
print("\(one) and \(two) are valid")
}
我确定我也可以使用 switch
,但这似乎并不比没完没了的 if/else 更优雅:
switch (one != nil || two != nil) {
case one == nil && two == nil:
print("neither are valid")
case one == nil:
print("one is nil")
case two == nil:
print("two is nil")
default:
print("\(one) and \(two) are valid")
}
最佳答案
你可以像这样使用 Swift switch
:
switch (one, two) {
case (nil, nil):
print("neither are valid")
case (nil, _?):
print("one is nil")
case (_?, nil):
print("two is nil")
default:
print("\(one) and \(two) are valid")
}
关于ios - 在 Swift 3 或 4 中检查 if 条件矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45990385/