😸

言語別の分割代入

2021/05/08に公開

複数の値を複数の変数へ一括代入するのは、分割代入 (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