2011-07-02 84 views
0

我想知道是否有更好的方法(即,較少的編碼)具有相同的output如下面的代碼:提高解析「* ARG」價值

# arg = :a, :b, :c 

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

我用上面的代碼解析由一個方法傳遞的參數以這種方式

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

回答

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]