是否有一个Ruby快捷方式来调用方法链的同名?

时间:2013-11-01 11:59:49

标签: ruby

说我有

class A
end

class B < A
end

p B.superclass.superclass.superclass # => BasicObject

而不是调用.superclass 3次,有没有什么方法可以指定类似重复运算符的东西,基本上会说这个方法调用x次?

3 个答案:

答案 0 :(得分:5)

这就是它的完成方式

3.times.reduce(B) {|a, _| a.superclass } # => BasicObject

答案 1 :(得分:4)

我做到如下:

([:superclass]*3).inject(B,:send)
# => BasicObject

答案 2 :(得分:1)

没有任何东西存在(我知道)。但在这里,我为你建了一个。 :)

class A
end

class B < A
end

class Object
  def call_repeatedly(sym, n)
    res = self
    n.times { res = res.send(sym)}
    res
  end
end

B.call_repeatedly(:superclass, 3) # => BasicObject