2014-07-20 175 views
2

特定元素返回數組我看了真的很難在http://www.ruby-doc.org/core-2.1.2/Array.html但我無法找到一個快速的功能,此行爲:沒有紅寶石

arr = [1,2,3,4,5,6] 

arr.without(3,6) #=> [1,2,4,5] 

我知道我可以寫我自己的函數/猴子補丁紅寶石/添加一個類的方法/寫在幾行。

有沒有辦法以紅寶石方式做到這一點?

回答

6

你可以用減法:

arr - [3,6] 

編輯

,如果你真的想你可以別名此方法

class Array 
    alias except - 
end 

那麼你可以使用:

arr.except [3,6] 
+0

我m知道數組減法,有沒有更乾淨的方法來做到這一點? –

+0

對我來說看起來很乾淨! –

+0

是的,我使用它很多,如果沒有其他方式我會使用它,謝謝 –

2

還有另外一種使用reject的方法。但它並不比-

arr.reject{|x| [3,6].include? x} 
0

這讓Rails中添加清潔劑5 :)

https://github.com/rails/rails/issues/19082

module Enumerable 
    def without(*elements) 
    reject { |element| element.in?(elements) } 
    end 
end 

它只是美觀,但它是有道理的大腦