😸
言語別の分割代入
複数の値を複数の変数へ一括代入するのは、分割代入 (Destructuring assignment) と言います、アンパック(Unpack) と呼ばれる場合もあります。特に関数から複数値を返す時に、便利です。最近では言語レベルでサポートしている言語が多くて、分割代入される対象はタープルだったり、配列だったり、言語によって色々あります。
Rustの場合
fn get_xyz() -> (i32, i32, i32) {
return (1, 2, 3);
}
let (x, y, z) = get_xyz();
let (x, y, z) = (1, 2, 3);
Pythonの場合
def get_xyz
return 1, 2, 3
end
x, y, z = get_xyz()
x, y, z = 1, 2, 3 # タープル
x, y, z = [1, 2, 3] # リスト
JavaScriptの場合
元々なかったもので、ES6で追加されました。
var getXyz = function() {
return [1, 2, 3]
}
[x, y, z] = getXyz();
[x, y, z] = [1, 2, 3];
PHPの場合
7.1以前:list関数より分割代入
7.1以降:https://wiki.php.net/rfc/short_list_syntax
function getXyz() {
return [1, 2, 3];
}
// 7.1以前
list($x, $y, $z) = getXyz();
list($x, $y, $z) = [1, 2, 3];
// 7.1以降
[$x, $y, $z] = [1, 2, 3];
※ 履歴:
・2021/08/21: タイトルを変更し、内容をリライト
Discussion