ARGV - это массив. Имейте в виду, что «константа» просто означает, что переменная не должна быть переназначена, а не то, что сам объект не может измениться. Возможно, вы путаете это с идеей объекта const
в C ++. Это больше эквивалентно замороженному объекту в Ruby. (И обратите внимание, что даже «константы не должны быть переназначены» - слабая гарантия в Ruby. Переназначение константы не дает сбоя; просто выводится предупреждение. Это плохая практика.)
Чтобы проиллюстрировать разницу:
ruby-1.9.2-p0 > CONSTANT = [1,2,3]
=> [1, 2, 3]
ruby-1.9.2-p0 > frozen = [1,2,3].freeze
=> [1, 2, 3]
ruby-1.9.2-p0 > CONSTANT << 4
=> [1, 2, 3, 4]
ruby-1.9.2-p0 > frozen << 4
RuntimeError: can't modify frozen array