Apple 的 Swift Book 有一个使用元音作为大小写的开关示例。
问题。 除了这个元音列表,是否可以使用包含这些内容的数组?如果是这样,这样做的语法是什么?
~ 来自 Apple Swift Book ~
The following example removes all vowels and spaces from a lowercase string to create a cryptic puzzle phrase:
let puzzleInput = "great minds think alike"
var puzzleOutput = ""
for character in puzzleInput.characters {
switch character {
case "a", "e", "i", "o", "u", " ":
continue
default:
puzzleOutput.append(character)
}
}
print(puzzleOutput)
// Prints "grtmndsthnklk"
最佳答案
是的:
let puzzleInput = "great minds think alike"
var puzzleOutput = ""
let vowels: [Character] = ["a", "e", "i", "o", "u", " "]
for character in puzzleInput.characters {
switch character {
case _ where vowels.contains(character):
continue
default:
puzzleOutput.append(character)
}
}
Swift 中的 case
匹配依赖于模式匹配运算符 (~=
)。如果为它定义一个新的重载,则可以进一步缩短代码:
func ~=<T: Equatable>(pattern: [T], value: T) -> Bool {
return pattern.contains(value)
}
for character in puzzleInput.characters {
switch character {
case vowels:
continue
default:
puzzleOutput.append(character)
}
}
关于arrays - Swift switch case 使用数组内容,语法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40034626/