在Ruby中初始化

sar*_*unw 6 ruby initialization

我曾经有这个

public constructor_name() {
   this(param)
}

public constructor_name(int param) {
  this.param = param
}
Run Code Online (Sandbox Code Playgroud)

在Java中,我们有这种自引用构造函数吗?

Geo*_*Geo 12

由于Ruby是一种动态语言,因此您不能拥有多个构造函数(或者就构造函数链接而言).例如,在以下代码中:

class A
   def initialize(one)
     puts "constructor called with one argument"
   end
   def initialize(one,two)
     puts "constructor called with two arguments"
   end
end
Run Code Online (Sandbox Code Playgroud)

您可能希望有2个具有不同参数的构造函数.但是,评估的最后一个将是类的构造函数.在这种情况下initialize(one,two).

  • 为什么你认为你不能拥有多个构造函数这一事实与Ruby是一种动态语言有关?据我所知,这是一个与语言是否动态无关的设计决策. (6认同)

Chu*_*uck 9

那些不是有效的Java,但我认为你得到的是你想要一个可选的参数.在这种情况下,您可以只为参数赋予默认值

 def initialize(param=9999)
 ...
 end
Run Code Online (Sandbox Code Playgroud)

或者您可以使用splat参数:

def initialize(*params)
  param = params.pop || 9999
end
Run Code Online (Sandbox Code Playgroud)