需要帮助理解Ruby动态编程

时间:2018-04-29 05:25:45

标签: ruby

我需要帮助理解DataGridView正在做的事情。我知道它的动态,我们将一个方法作为一个块传递给array.partition方法。如果不使用元编程

,我将如何实现相同目标
arr.partition(&a.method('>'))

输出

a=13
arr=[10,11,13,22]
left,right= arr.partition(&a.method('>'))
p left
p right

1 个答案:

答案 0 :(得分:2)

它与元编程无关,它只是旧的好红宝石。

left, right = arr.partition(&a.method('>'))

这里真正发生的是:

一步一步:

> 13.method(:>)
#⇒ Integer#>(arg1)
> p = 13.method(:>).to_proc
#⇒ #<Proc:0x005652125f8b50 (lambda)>
> [10, 11, 13, 22].partition &p
#⇒ [[10, 11], [12, 13]]

同样可以通过以下方式实现:

a = 13
arr = [10, 11, 13, 22]
left, right = arr.partition { |element| a > element }
#⇒ [[10, 11], [12, 13]]