Use map
rather than each
:
>> strings.map { |x| x.to_sym }
=> [:HTML, :CSS, :JavaScript, :Python, :Ruby]
For Ruby 1.8.7 and later or with ActiveSupport included, you can use this syntax:
>> strings.map &:to_sym
=> [:HTML, :CSS, :JavaScript, :Python, :Ruby]
The reason your each
method appears to not work is that calling puts
with a symbol outputs the string representation of the symbol (that is, without the :
). Additionally, you’re just looping through and outputting things; you’re not actually constructing a new array.