在case语句中覆盖一系列字符串?

时间:2014-12-08 00:47:40

标签: swift switch-statement

想象一下你知道你是一个String的值的情况,但是这个字符串可以是一个字母或多个字母,也可以是一个数字。现在,您要为此值设置switch语句。您希望为任何数字运行相同的代码块,但不希望必须写出引号中的每个数字来捕获所有数据。

这有效,但如何清理它以便你不必写出每一个数字?

let str = "8"
switch str {
    case "a": println("is a")
    case "gb": println("is gb")
    case "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" : println("is a digit") 
}

你能创建一系列实际上是字符串的Int并在case语句中对其进行测试,还是可以更改你在案例中打开的值?例如,您可以将String转换为Int,如果它在0-9范围内,那么您知道原始String是一个数字。像case str.toInt() in 0...9这样的东西?一个解决方案虽然比上面的代码更不友好,但是创建一个数字数组然后测试str是否在数组中。

1 个答案:

答案 0 :(得分:5)

愚蠢的我,它在Swift中非常简单。 case "0"..."9":
我并不认为创造这样的范围足够聪明!非常漂亮。