Ruby类方法继承,如何让子方法停止执行?

标签 ruby ruby-on-rails-3 oop

这个问题与 Ruby on Rails 问题有关,但这个简化的问题将为我提供我正在寻找的解决方案。

我有两个类,子类继承父方法,但如果父方法中满足某些条件,我想将子方法代码执行一半。

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

现在,如果 super 返回 falseB#test_method 将返回 false。否则它会评估 if-end block 内的代码。

关于Ruby类方法继承,如何让子方法停止执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17459098/

相关文章:

oop - 关于面向对象编程的抽象数据类型 vs 数据类型 vs 数据结构

ruby-on-rails - Anemone 可以抓取本地存储在我硬盘上的 html 文件吗?

ruby - 瘦异步应用程序示例如何缓冲对主体的响应?

mysql - Rails/MySQL 兼容性

ruby-on-rails - 缺少带有 { :locale=>[:en], :formats=>[:html], 的模板布局/邮件程序

python - 创建类的静态属性(属性是同一类的实例)

ruby-on-rails - 在 Ruby 和/或 Rails 中在哪里定义自定义错误类型?

ruby-on-rails - 如何从没有直接关联的 link_to 创建资源?

ruby-on-rails - Webrick 不会停止或重新启动

Python类继承构造函数失败: What am I doing wrong?