ham*_*obi 36 variables variable-assignment swift
如何使用Swift在一行中分配多个变量?
var blah = 0
var blah2 = 2
blah = blah2 = 3 // Doesn't work???
Run Code Online (Sandbox Code Playgroud)
Mat*_*son 68
你没有.
这是一种语言功能,可以防止返回值的赋值的标准不需要的副作用,如Swift书中所述:
与C和Objective-C中的赋值运算符不同,Swift中的赋值运算符本身不返回值.以下声明无效:
Run Code Online (Sandbox Code Playgroud)if x = y { // this is not valid, because x = y does not return a value }
此功能可防止在实际
=
使用等于operator(==
)时意外使用赋值运算符().通过使ifx = y
无效,Swift可以帮助您避免代码中的这类错误.
因此,这有助于防止这种极其常见的错误.虽然这种错误可以在其他语言中得到缓解 - 例如,通过使用Yoda条件 - Swift设计师显然认为最好在语言层面确定你不能用脚射击自己.但它确实意味着你不能使用:
blah = blah2 = 3
Run Code Online (Sandbox Code Playgroud)
如果你急于在一行上进行赋值,你可以使用元组语法,但你仍然必须专门分配每个值:
(blah, blah2) = (3, 3)
Run Code Online (Sandbox Code Playgroud)
......我不推荐它.虽然起初可能会感到不方便,但在我看来,只需输入整个内容就是最好的方法:
blah = 3
blah2 = 3
Run Code Online (Sandbox Code Playgroud)
作为公认的回答说:你可以得到一些更严格的语法,但你不能从指派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)
Run Code Online (Sandbox Code Playgroud)