arrays - Swift switch case 使用数组内容,语法?

标签 arrays swift syntax switch-statement

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/

相关文章:

variables - 为什么修改未声明为可变的变量时编译器不报错?

ruby - 完全像示例字符串一样对数组进行排序

swift - 如何处理 Process.run 抛出的异常

ios - -[UIThreadSafeNode canPerformAction :withSender:]: unrecognized selector sent to instance

javascript:捕获元素名称和元素的字符串值的语法

ruby - Ruby 中百分号 + 管道运算符的含义是什么,如 "%|"?

javascript - 将 null 放置在数组的开头

javascript - 当元素未知时如何获取数组中元素的计数

javascript - 您可以使用 Array.map 来根据条件摆脱它所作用的元素吗?

swift - 如何过滤字典数组