Swift中的多个变量赋值

时间:2014-10-02 06:35:22

标签: variables swift variable-assignment

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

    var blah = 0
    var blah2 = 2

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

2 个答案:

答案 0 :(得分:66)

你没有。

这是一种语言功能,可以防止分配返回值的标准不需要的副作用,如described in the Swift book

  

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

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

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

因此,这有助于防止这种极其常见的错误。虽然这种错误可以在其他语言中得到缓解 - 例如,通过使用Yoda conditions - Swift设计师显然决定在语言层面确定你不能用脚射击自己更好。但这确实意味着你不能使用:

blah = blah2 = 3

如果你急于在一行上完成作业,你可以使用元组语法,但你仍然需要专门指定每个值:

(blah, blah2) = (3, 3)

......我不推荐它。虽然起初可能会感到不方便,但在我看来,输入整个内容是最好的方法:

blah = 3
blah2 = 3

答案 1 :(得分:3)

正如接受的答案所说:您可以获得更严格的语法,但是如果不使用多行,则无法从a分配到bc(可能为了安全起见)。这是一个更简洁的语法示例,用于在一行中声明和分配多个变量:

var red, green, blue, alpha : CGFloat
(red, green, blue, alpha) = (0.0, 0.0, 0.0, 0.0)
ledColor.getRed(&red, green: &green, blue: &blue, alpha: &alpha)