创建符号数组

时间:2011-09-08 21:46:16

标签: ruby

有没有更清洁的方法来做这样的事情?

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

我会认为%s会做我想做的事,但事实并非如此。它只需要括号之间的所有内容,并使其中的一个大符号。

只是一个小小的烦恼。

3 个答案:

答案 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)