在Swift中使用if in赋值的用法

Fab*_*cci 56 where optional ios swift swift3

Swift手册第61页的Swift文档提示可以使用where常规条件连接可选绑定.然而,当我这样做时,我有一个警告,建议我where用以下代码中的逗号替换:

if let geocodingError = error as? NSError where geocodingError.code == 2
Run Code Online (Sandbox Code Playgroud)

Gri*_*mxn 136

在Swift 3中,这种语法已经改变.

什么是

if let x = y, a = b where a == x {

就是现在

if let x = y, let a = b, a == x {

理由是,它的每个子句if ... {现在都是一个独立的布尔测试.

有关此更改的详细信息,请参阅Xcode 发行说明Swift Evolution提案.

  • 又一个变化.文档中的where子句仍然存在.无论如何使用你建议的表格工作正常. (6认同)
  • @dfri这是[SE-0099"重组条件条款"]的一部分(https://github.com/apple/swift-evolution/blob/master/proposals/0099-conditionclauses.md) (3认同)

Ale*_*lex 9

具有两个条件的示例

if let x = y, let a = b, a == x && !x.isEmpty {
Run Code Online (Sandbox Code Playgroud)