Swiftを使用して複数の変数を1行に割り当てるにはどうすればよいですか?
var blah = 0
var blah2 = 2
blah = blah2 = 3 // Doesn't work???
しないでください。
これは、 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条件 —を使用することで、Swiftデザイナーは、自分の足で撃つことができなかった言語レベルですが、それはあなたが使用できないことを意味します:
blah = blah2 = 3
1行で割り当てが必要な場合は、Tuple構文を使用できますが、各値を具体的に割り当てる必要があります。
(blah, blah2) = (3, 3)
...そしてそれはお勧めしません。最初は不便に感じるかもしれませんが、私の意見では、すべてを入力するのが最善の方法です。
blah = 3
blah2 = 3
受け入れられた答えが示すように:いくつかのより厳密な構文を取得できますが、複数行を使用せずにa
からb
にc
に割り当てることはできません(おそらく安全のため)。 1行で複数の変数を宣言して割り当てるための、より簡潔な構文の例を次に示します。
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)