複数の変数に同じ値を代入する

背景

複数の値に同時に代入したいことがたまにある。
(その行為が妥当かどうなのかは置いておいて)

普通に

a = 0;
b = 0;

とすればよいのだけれど、
どうせならもっとスマートな書き方を知っておこうということで調べてみた結果をまとめる。


結論

a = b = 0;

どの言語もだいたい上記のような書き方で宣言できる。

「代入」はそもそも「式」なので、一文で記入した場合、右から評価される。
それゆえ、このような書き方ですべての変数に代入することが可能となる。


言語ごとの違い

C / C++ / C# / Objective-C

int a,b;
a = b = 0;
int a = 0, b = 0;

※ 以下のようにすると、bにのみ0が代入される

int a, b = 0;

JavaScript

var a = b = 0;

※ 上記の場合、aはローカル変数、bはグローバル変数となる

PHP

$a = $b = 0;

Python

// マルチターゲット代入
a = b = 0;

// アンパック代入
a, b = 0, 0;
a, b = 1, 2;    // ※

※アンパック代入では一括で違う値も代入可能(さすが)

VBA

無理

Swift

[2017/12/06 追記]

同時に同じ値の代入はできないが、
タプルを利用して、Pythonでいうアンパック代入のようなことはできる

※タプルとは

この辺をご参考に…(私もいまいちわかっていないので丸投げ)

※Swift1から使用可能…なはず。

let (a, b) = (1, 2)

他にもわかったら追記します

シェアする

  • このエントリーをはてなブックマークに追加

フォローする