【发布时间】:2014-11-27 03:06:15
【问题描述】:
如何使用 Swift 在一行中分配多个变量?
var blah = 0
var blah2 = 2
blah = blah2 = 3 // Doesn't work???
【问题讨论】:
标签: variables swift variable-assignment
如何使用 Swift 在一行中分配多个变量?
var blah = 0
var blah2 = 2
blah = blah2 = 3 // Doesn't work???
【问题讨论】:
标签: variables swift variable-assignment
你没有。
这是一种语言功能,可防止赋值返回值的标准不良副作用,如described in the Swift book:
与 C 和 Objective-C 中的赋值运算符不同,Swift 中的赋值运算符本身并不返回值。以下语句无效:
if x = y { // this is not valid, because x = y does not return a value }此功能可防止在实际使用等于运算符 (
==) 时意外使用赋值运算符 (=)。通过使 ifx = y无效,Swift 可以帮助您避免代码中的此类错误。
因此,这有助于防止这种极其常见的错误。虽然这种错误可以在其他语言中得到缓解——例如,通过使用Yoda conditions——Swift 设计者显然决定最好在语言级别确定你不能自爆。但这确实意味着您不能使用:
blah = blah2 = 3
如果您急于在一行上进行赋值,您可以使用元组语法,但您仍然必须专门分配每个值:
(blah, blah2) = (3, 3)
...我不会推荐它。虽然一开始可能会觉得不方便,但在我看来,只输入整个内容是最好的方法:
blah = 3
blah2 = 3
【讨论】:
0 [尝试在 swift 中编写 let x = .5])。
正如公认的答案所说:您可以获得一些更严格的语法,但是您不能在不使用多行的情况下从 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)
【讨论】:
red 等。