改进解析'* arg'值

时间:2011-07-02 16:24:36

标签: ruby parsing

我想知道是否有更好的方法(即编码更少)与下面的代码具有相同的output

# arg = :a, :b, :c

output = args.to_a.flatten.compact.map(&:to_sym)
# => [:a, :b, :c]

我使用上面的代码以这种方式解析方法传递的参数

`method_name(:a, :b, :c)`.

1 个答案:

答案 0 :(得分:2)

我认为不需要to_aflattencompact

如果要将字符串转换为符号,则可以执行.map(&:to_sym)。如果您只接受符号,则只需args包含您想要的内容。

def method_name(*args)
   p args.map(&:to_sym)
end

method_name(:a, "b", :c)

输出

[:a, :b, :c]