#やりたいこと
JavaScriptの分割代入のようなことがPythonでしたいです。
destructuringAssignment.js
let a, b, c;
[a, b, c] = ["x", "y", "z"];
console.log(a, b, c); // x y z
#結論
Pythonのシーケンスのアンパックによって実現できます。
unpack.py
a, b, c = ("x", "y", "z")
print(a, b, c) # x y z
#余談
Pythonのテキストデータはテキストシーケンス型であり、シーケンスのアンパックが行えます。
textunpack.py
a, b, c = "xyz"
print(a, b, c) # x y z
このPythonの挙動を見て、JavaScriptではどうなるのか試したところ。。。
textDestructuringAssignment.js
let a, b, c;
[a, b, c] = "xyz";
console.log(a, b, c); // x y z
いけました!ただし、色々調べましたがこちらの仕様がECMAScriptのどこで定義されているのかはよくわかりませんでした。。。
さらにここから、見かけ上Pythonと同様の記法も試してみました!
textUnpack.js
let a, b, c;
a, b, c = "xyz";
console.log(a, b, c); // undefined undefined xyz
どうやら左辺の最後の変数に右辺の値が代入され、左辺の最後以外の変数には何も起きないようです。
このあたりの仕様も一旦この記事にメモ書きして、興味が湧いたらまた調べます!
#参考URL
分割代入 - JavaScript | MDN
5. データ構造 — Python 3.9.1rc1 ドキュメント
組み込み型 — Python 3.9.1rc1 ドキュメント