Ruby类方法继承,如何阻止子方法执行?
这个问题属于RubyonRails问题,但这个简化的问题将为我提供我正在寻找的解决方案 我有两个类,子类继承父方法,但是如果父方法中满足某些条件,我想将子方法代码的执行减半Ruby类方法继承,如何阻止子方法执行?,ruby,ruby-on-rails-3,oop,Ruby,Ruby On Rails 3,Oop,这个问题属于RubyonRails问题,但这个简化的问题将为我提供我正在寻找的解决方案 我有两个类,子类继承父方法,但是如果父方法中满足某些条件,我想将子方法代码的执行减半 class A def test_method puts 'method1' return false end end class B < A def test_method super #return false was called in parent metho
class A
def test_method
puts 'method1'
return false
end
end
class B < A
def test_method
super
#return false was called in parent method, I want code to stop executing here
puts 'method2'
end
end
b = B.new
b.test_method
我期望的输出是:
method1
method2
method1
有人知道如何实现我期望的输出吗
谢谢 您可以使用简单的
if end
语句:
class B < A
def test_method
if super
puts 'method2'
end
end
end
B类
现在,B#test_方法
将返回false
,如果super返回false
。否则,它将计算if end
块中的代码 B类class B < A
def test_method
super and puts 'method2'
end
end
def测试方法
超级和“方法2”
结束
结束
如果super不是nil
或false
或者,您可以使用更强的优先级&&
,但此较低的优先级通常用作流控制
看看这个。谢谢。当你看到它时,答案就简单多了!