说我有
class A
end
class B < A
end
p B.superclass.superclass.superclass # => BasicObject
除了调用 .superclass 3 次之外,有没有什么方法可以指定类似重复运算符之类的东西,它基本上会说调用这个方法 x 次?
说我有
class A
end
class B < A
end
p B.superclass.superclass.superclass # => BasicObject
除了调用 .superclass 3 次之外,有没有什么方法可以指定类似重复运算符之类的东西,它基本上会说调用这个方法 x 次?
这就是它的完成方式
3.times.reduce(B) {|a, _| a.superclass } # => BasicObject
我做了如下:
([:superclass]*3).inject(B,:send)
# => BasicObject
没有任何东西存在(据我所知)。但在这里,我为你建造了一个。:)
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