基本構文(9)

参考:MSH Language and Syntax

1行のステートメントで、複数の変数に代入することができます。

複数の変数への同時代入(1)

MSH> $a=1,2,3,4,5,6
MSH> $first,$second,$rest = $a
MSH> $first
1
MSH> $second
2
MSH> $rest
3
4
5
6
  • 変数をカンマで区切って並べ配列($a)を代入すると、配列の要素が順に代入されます。
  • 「代入する変数の数」 < 「配列の要素」の場合
    • 最後の変数($rest)に残りの配列要素が全て代入されます。($rest = 3,4,5,6)

複数の変数への同時代入(2)

MSH> $a=1,2
MSH> $first,$second,$third = $a
MSH> $first
1
MSH> $second
2
MSH> $third
MSH>
MSH> $third -eq $null
True
  • 「代入する変数の数」 > 「配列の要素」の場合
    • 素数を超えた変数には$nullが代入されます。


当然ですが、以下のように記述しても、
配列の先頭要素だけを代入することはできません。

MSH> $a=1,2,3
MSH> $first = $a
MSH> $first
1
2
3

配列の先頭要素を代入する場合は、普通にインデックスを指定してください。

MSH> $first = $a[0]
MSH> $first
1

複数の変数への同時代入(3)

他の言語でも一般的だと思いますが、
以下のようにすると、同じ値を同時に代入可能です。

MSH> $a=$b=$c=$d=1
MSH> $a
1
MSH> $b
1
MSH> $c
1
MSH> $d
1