ruby - 构造函数覆盖

标签 ruby super

我有一个类:

class One
  def initialize; end
end

我需要像这样用我自己的构造函数创建一个新类:

class Two < One
  def initialize(some)
    puts some
    super
  end
end

Two.new("thing")

但是当我启动代码时,出现错误:

thing
test.rb:10:in `initialize': wrong number of arguments (1 for 0) (ArgumentError)

最佳答案

super 在这种情况下(没有括号)是一种特殊形式。它使用原始参数调用父类(super class)方法。

尝试调用

super()

关于ruby - 构造函数覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2570428/

相关文章:

ruby - FactoryGirl 继承属性已经定义

ruby-on-rails - FriendlyID Controller 名称验证包含问题

java - 在 Java 中,this/super 关键字可以表示类/枚举以外的任何东西吗?

java - 类型转换为父类(super class)并调用重写方法是否可以接受? ( java )

java - 如何修复onDestroy的 'SuperNotCalledException"?

ruby - 如何从 gRPC 服务返回错误?

ruby - []如何在Ruby中的类上工作

ruby-on-rails - 为什么很多人在 Rails 中使用 "-%>"而不是 "%>"?

javascript - typescript :从扩展类调用 super 方法会产生类型错误 - (中间值)不是函数

python - Python-2.x 中的 super() 是否损坏?