web-dev-qa-db-ja.com

Swiftでの複数の変数の割り当て

Swiftを使用して複数の変数を1行に割り当てるにはどうすればよいですか?

    var blah = 0
    var blah2 = 2

    blah = blah2 = 3  // Doesn't work???
36
hamobi

しないでください。

これは、 Swift book

CおよびObjective-Cの代入演算子とは異なり、Swift自体の代入演算子は値を返しません。次のステートメントは無効です。

   if x = y {
       // this is not valid, because x = y does not return a value
   }

この機能により、代入演算子(=)等号演算子(==)は実際に意図されたものです。 if x = y無効、Swiftは、コード内のこの種のエラーを回避するのに役立ちます。

したがって、これはこの非常に一般的なエラーの防止に役立ちます。この種の間違いは他の言語では軽減できますが、たとえば Yoda条件 —を使用することで、Swiftデザイナーは、自分の足で撃つことができなかった言語レベルですが、それはあなたが使用できないことを意味します:

blah = blah2 = 3

1行で割り当てが必要な場合は、Tuple構文を使用できますが、各値を具体的に割り当てる必要があります。

(blah, blah2) = (3, 3)

...そしてそれはお勧めしません。最初は不便に感じるかもしれませんが、私の意見では、すべてを入力するのが最善の方法です。

blah = 3
blah2 = 3
67
Matt Gibson

受け入れられた答えが示すように:いくつかのより厳密な構文を取得できますが、複数行を使用せずにaからbcに割り当てることはできません(おそらく安全のため)。 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)
3
Dan Rosenstark