Con*_*sed 5 arrays syntax switch-statement swift
来自Apple的Swift Book有一个使用元音作为案例的开关示例.
题. 而不是有这个元音列表,是否可以使用包含此内容的数组?如果是这样,这样做的语法是什么?
〜来自Apple Swift Book~
以下示例从小写字符串中删除所有元音和空格,以创建一个神秘的拼图短语:
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"
Run Code Online (Sandbox Code Playgroud)
是:
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)
}
}
Run Code Online (Sandbox Code Playgroud)
caseSwift中的匹配依赖于模式匹配operator(~=).如果为它定义新的重载,则可以进一步缩短代码:
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)
}
}
Run Code Online (Sandbox Code Playgroud)