0

我之前问过一个类似的问题:引用方法?

但现在我想弄清楚如何用这段代码做到这一点:

arr0 = [1,2,3]
arr1 = [2,3,4,5]
arr1.reject! {|x|
    arr0.include? x
}

显然{|x| arr0.include? x}可以简化为arr0.include?. 但我不知道如何获得这个方法参考。

编辑:我对如何使用更简单的语法在 Ruby 中减去数组不感兴趣。我正在寻找一种方法来获取对方法的引用。

4

4 回答 4

6
arr1.reject!(&arr0.method(:include?))
于 2012-09-28T16:22:02.803 回答
1

Ruby 中的每个对象都有一个method方法:

m = [1,2,3].method(:include?) #reference to the include? method of this array.
p m.call(1) #call the method with an argument ; => true
于 2012-09-28T16:21:28.193 回答
1
arr0 = [1,2,3]
arr1 = [2,3,4,5]

m = arr0.method(:include?)
arr1.reject!(&m) #=> [4, 5]
于 2012-09-28T16:36:45.367 回答
1

你可以这样做

arr1 - arr0

你不能用椒盐卷饼冒号来做到这一点,因为你有一个论点。

于 2012-09-28T15:33:11.550 回答