【问题标题】:Swift assignments inside conditions条件内的 Swift 赋值
【发布时间】:2015-08-29 12:08:20
【问题描述】:

我想知道这段代码的作用:

var something: String = "Hi"

if something = "Hello world!" {
    // Will this be executed?
}

它会分配给something 变量并执行if 正文吗?或者它是否会仅为if 主体设置该变量的值,而外部不会改变?或者和nil有什么关系?

【问题讨论】:

  • TIAS:试试看!要么在命令行输入“swift”,要么去swiftstub.com

标签: swift conditional-statements variable-assignment swift2


【解决方案1】:

赋值不是返回布尔值的表达式,因此不能像这样在if 中使用。所以这不会编译。

(虽然你会得到一个误导性的编译器消息)

【讨论】:

  • 带有完全无用的错误消息。但是,如果我们说if something = funcThatReturnsOptionalString() { ...,这仍然无法编译吗?
  • @nhgrif 您的建议也会失败,因为您缺少 let 关键字。如果你创建一个返回 String? 的函数,你必须解开这个可选的。
【解决方案2】:

这种模式只适用于可能失败的赋值——也就是说,如果你正在赋值一个返回 Optional 值的表达式的结果。在这种情况下,您使用if let,而不仅仅是if

【讨论】:

    【解决方案3】:

    我们不能对 if 条件使用赋值运算符,你会 if let 假设如果你正在使用 可选类型

    这里有一些运算符可以帮助您清楚区分赋值运算符

    =   assignment operator
    ==  is equal to
    === is identical to
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-04
      • 1970-01-01
      • 2015-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-23
      相关资源
      最近更新 更多