Есть ли более чистый способ сделать что-то вроде этого?
%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)