一尘不染

Swift中的多变量分配

swift

如何使用Swift在一行中分配多个变量?

    var blah = 0
    var blah2 = 2

    blah = blah2 = 3  // Doesn't work???

阅读 215

收藏
2020-07-07

共1个答案

一尘不染

你不知道

这是一种语言功能,可以防止赋值的标准不良副作用返回值,如Swift书中所述

与C和Objective-C中的赋值运算符不同,Swift中的赋值运算符本身并不返回值。以下语句无效:

   if x = y {
       // this is not valid, because x = y does not return a value
   }

此功能可防止在实际需要=等于运算符(==)时偶然使用赋值运算符()。通过使其x = y无效,Swift可帮助您避免代码中的此类错误。

因此,这有助于防止此极其常见的错误。尽管可以用其他语言(例如,通过使用Yoda条件)来减轻这种错误,但是Swift设计师显然认为最好在语言水平上确定您无法用脚射击。但这确实意味着您不能使用:

blah = blah2 = 3

如果您迫切希望在一行上进行赋值,则可以使用元组语法,但是仍然必须专门分配每个值:

(blah, blah2) = (3, 3)

…而且我不推荐它。虽然一开始可能会带来不便,但我认为最好只输入整个内容:

blah = 3
blah2 = 3
2020-07-07