Создать массив символов

Есть ли более чистый способ сделать что-то вроде этого?

%w[address city state postal country].map(&:to_sym) 
#=> [:address, :city, :state, :postal, :country]

Я бы подумал, что %s сделал бы то, что хотел, но это не так. Он просто берет все между скобками и делает из него один большой символ.

Просто небольшое недовольство.

Ответ 1

Оригинальный ответ был написан еще в сентябре 11 года, но, начиная с Ruby 2.0, существует более короткий способ создания массива символов! Этот литерал:

%i[address city state postal country]

будет делать именно то, что вы хотите.

Ответ 2

С риском стать слишком буквальным, я думаю, что самый чистый способ построения массива символов - использовать массив символов.

fields = [:address, :city, :state, :postal, :country]

Не могу придумать ничего более кратким, чем это.

Ответ 3

%i[ ] Неинтерполированный массив символов, разделенных пробелами (после Ruby 2.0)

%I[ ] Интерполированный массив символов, разделенных пробелами (после Ruby 2.0)

%i[address city state postal country]

самый чистый способ сделать это:

%w[address city state postal country].map(&:to_sym)