创建符号数组

有没有比这更干净的方法?

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

我本以为 %s会做我想做的事,但它没有。它只是把括号之间的一切,使一个大的符号出来。

只是有点小麻烦。

64081 次浏览

我认为构造一个符号数组的最干净的方法就是使用一个符号数组。

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

没有比这更简洁的了。

最初的答案是在1911年9月写的,但是,从 Ruby 2.0开始,有一个更短的方法来创建一个符号数组!字面意思是:

%i[address city state postal country]

会做你想做的事。

%i[ ]非插值符号数组,用空格分隔(在 Ruby 2.0之后)

%I[ ]符号插值数组,用空格分隔(在 Ruby 2.0之后)

%i[address city state postal country]

最干净的方法是:

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