如何使用Swift在一行中分配多个变量?
var blah = 0 var blah2 = 2 blah = blah2 = 3 // Doesn't work???
你不知道
这是一种语言功能,可以防止赋值的标准不良副作用返回值,如Swift书中所述:
与C和Objective-C中的赋值运算符不同,Swift中的赋值运算符本身并不返回值。以下语句无效: if x = y { // this is not valid, because x = y does not return a value } 此功能可防止在实际需要=等于运算符(==)时偶然使用赋值运算符()。通过使其x = y无效,Swift可帮助您避免代码中的此类错误。
与C和Objective-C中的赋值运算符不同,Swift中的赋值运算符本身并不返回值。以下语句无效:
if x = y { // this is not valid, because x = y does not return a value }
此功能可防止在实际需要=等于运算符(==)时偶然使用赋值运算符()。通过使其x = y无效,Swift可帮助您避免代码中的此类错误。
=
==
x = y
因此,这有助于防止此极其常见的错误。尽管可以用其他语言(例如,通过使用Yoda条件)来减轻这种错误,但是Swift设计师显然认为最好在语言水平上确定您无法用脚射击。但这确实意味着您不能使用:
blah = blah2 = 3
如果您迫切希望在一行上进行赋值,则可以使用元组语法,但是仍然必须专门分配每个值:
(blah, blah2) = (3, 3)
…而且我不推荐它。虽然一开始可能会带来不便,但我认为最好只输入整个内容:
blah = 3 blah2 = 3