有没有更清洁的方法来做这样的事情?
%w[address city state postal country].map(&:to_sym)
#=> [:address, :city, :state, :postal, :country]
我会认为%s
会做我想做的事,但事实并非如此。它只需要括号之间的所有内容,并使其中的一个大符号。
只是一个小小的烦恼。
答案 0 :(得分:337)
我在11年9月写过原始答案,但是starting from Ruby 2.0创建一个符号数组的方法更短!这个文字:
%i(address city state postal country)
完全符合您的要求。
答案 1 :(得分:87)
冒着过于文字化的风险,我认为构建符号数组的最简洁方法是使用符号数组。
fields = [:address, :city, :state, :postal, :country]
想不到比这更简洁的事情。
答案 2 :(得分:1)
%i[ ]
非插值符号数组,用空格分隔(在Ruby 2.0之后)
%I[ ]
插值符号数组,用空格分隔(在Ruby 2.0之后)
%i[address city state postal country]
最干净的方法是:
%w[address city state postal country].map(&:to_sym)