`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行の場合はそれ以前の行の変数の状態を保持した状態でそれぞれの変数へ同時に代入が行われる。