3

说我有

class A
end

class B < A
end

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

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

4

3 回答 3

5

这就是它的完成方式

3.times.reduce(B) {|a, _| a.superclass } # => BasicObject
于 2013-11-01T12:07:41.597 回答
4

我做了如下:

([:superclass]*3).inject(B,:send)
# => BasicObject
于 2013-11-01T12:26:42.673 回答
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
于 2013-11-01T12:04:18.103 回答