当前位置 : 主页 > 手机开发 > 其它 >

Swift:具有多个模式的Switch case无法绑定到变量

来源:互联网 收集:自由互联 发布时间:2021-06-11
在官方 Swift Programming Language指南中,有关切换案例的说法: “…如果案例包含多个与控制表达式匹配的模式,则这些模式都不能包含常量或变量绑定.” 包含多个模式意味着什么? 这意味
在官方 Swift Programming Language指南中,有关切换案例的说法:
“…如果案例包含多个与控制表达式匹配的模式,则这些模式都不能包含常量或变量绑定.”

包含多个模式意味着什么?

这意味着具有多个模式的案例标签无法声明变量.

这是允许的:

let somePoint = (1, 1)
switch somePoint {
// Case with multiple patterns without binding
case (0, _),
     (_, 0):
    println("(\(somePoint.0), \(somePoint.1)) is on an axis")
default:
    println("(\(somePoint.0), \(somePoint.1)) is not of an axis")
}

这也是允许的:

let somePoint = (1, 1)
switch somePoint {
// Case with single patterns with binding
case (0, let y):
    println("(0, \(y)) is on an axis")
case (let x, 0):
    println("(\(x), 0) is on an axis")
default:
    println("(\(somePoint.0), \(somePoint.1)) is not of an axis")
}

但是,这是禁止的:

let somePoint = (1, 1)
switch somePoint {
// Case with multiple patterns that have bindings
case (0, let y),
     (let x, 0):
    println("(\(x), \(y)) is on an axis")
default:
    println("(\(somePoint.0), \(somePoint.1)) is not of an axis")
}

以上产生错误:

error: 'case' labels with multiple patterns cannot declare variables
网友评论