如何使用Swift在一行中分配多个变量?
var blah = 0
var blah2 = 2
blah = blah2 = 3 // Doesn't work???
答案 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
分配到b
到c
(可能为了安全起见)。这是一个更简洁的语法示例,用于在一行中声明和分配多个变量:
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)