说我有
class A
end
class B < A
end
p B.superclass.superclass.superclass # => BasicObject
而不是调用.superclass 3次,有没有什么方法可以指定类似重复运算符的东西,基本上会说这个方法调用x次?
答案 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