shiftの罠

Array#shiftメソッドの仕様を気にせずに使っていたので、ハマった事を書きます。

配列をshiftしていって、空配列になった時。配列aは全ての要素が取り出された時、a = nilになると思っていました。
しかし、shiftは配列の要素を取り出すメソッドなので配列自身は消えないんですよね。よくよく考えれば気づくことなんだけど、今後注意しなければ。

irb(main):001:0> a = [1,2]
=> [1, 2]
irb(main):002:0> a.shift
=> 1
irb(main):003:0> a.shift
=> 2
irb(main):004:0> a.shift
=> nil
irb(main):005:0> a.nil?
=> false
irb(main):006:0> a.empty?
=> true

nil?メソッドでtrueが返ってくるとおもってたのですが、配列自身は空配列になっている。