首先我被Swift鼓励,因为最后你可以使用字符串编写switch
语句,这意味着基于字典的代码现在几乎可读。
let kMyDictionaryKey1 = "one" // use 'let' to declare constant dictionary key
let kMyDictionaryKey2 = "two" // use 'let' to declare constant dictionary key
println( "hello world" );
if ( true )
{
var dictionary = [kMyDictionaryKey1: 1, "two": 2, "three": 3]
for val in dictionary.keys {
switch val {
case kMyDictionaryKey1:
println( "yay switch on Key1" )
break
case kMyDictionaryKey2:
println( "yay switch on Key2" )
break
default :
println("world" )
break
} // end switch
}
}
以上代码效果很好。
但是,我也注意到你可以将变量作为案例标签。例如,您可以声明
var kMyDictionaryKey1 = "one"
有些情况下我想要这样做,但它似乎也很危险。 它可能会导致代码草率和重复的开关标签。大多数语言不允许这样做,重复标签是编译时错误。
是否有其他语言允许案例标签的变量?
答案 0 :(得分:1)
切换语句是一种更具表现力的形式,可能是您以前使用长if... else if... else if...
语句链的形式,因此能够在case语句中使用变量,字符串和表达式。
您可以拥有多个具有相同大小写的case语句,但第一个匹配的大小写总是执行的大小写。
此外,在Swift中,switch语句没有任何后果,因此不需要使用break
语句。
var testVal = "one"
var result = 0
switch(testVal)
{
case "one":
result = 1
case "one":
result = 2
default:
result = 3
}
result // the result is 1