20 Sep 2015

1行で複数の変数を設定するのは気をつけよう

`a, b = b, a`と`a = b; b = a;`って違うんですね。

```ruby
> a, b, c = 'a''b''c'
=> ["a""b""c"]

> a = b; b = a;
> [a, b, c]
=> ["b""b""c"]

# リセット
> a, b, c = 'a''b''c'
=> ["a""b""c"]

> a, b = b, a
> [a, b, c]
=> ["b""a""c"]
```

つまり1行の場合はそれ以前の行の変数の状態を保持した状態でそれぞれの変数へ同時に代入が行われる。