ruby - initialize 方法是 Ruby 中的内置方法吗?

标签 ruby methods

初始化方法是Ruby中的内置方法吗?

为什么我们在创建一个新对象时必须传递参数,为什么它直接进入初始化方法?而且,我们可以创建一个没有初始化方法的类吗?

最佳答案

你可以考虑Class#new方法和每个类的#initialize方法之间的关系,或多或少是这样实现的:

class Class
  def new
    instance = allocate()

    instance.initialize

    return instance
  end
end

class Foo
  def initialize
    # Do nothing
  end
end

您可以在不显式定义#initialize方法的情况下创建一个类,因为#initialize方法被默认定义为什么都不做,它的返回值总是被忽略(无论您返回什么值)。

您传递给 Class#new 的参数总是以相同的顺序和格式直接传递给 #initialize。例如:

class Class
  def new (arg1, arg2, &block_arg)
    instance = allocate()

    instance.initialize(arg1, arg2, &block_arg)

    return instance
  end
end

class MyClass
  def initialize (arg1, arg2, &block_arg)
    # Do something with args
  end
end

关于ruby - initialize 方法是 Ruby 中的内置方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22738903/

相关文章:

ruby-on-rails - 使用相同的字符串作为符号、实例变量和属性重构 Rails Controller 代码

php - Ruby 通过模板从字符串中选择数据,就像 php preg_match 做的那样

ruby - 如何判断安装了 RVM 的 ruby​​ 实际使用了哪个 openssl 库

PHP静态方法递归

ajax - 为什么有多种 HTTP 方法可用?

c# - 如何删除仅类型不同但使用非默认构造函数的方法之间的重复?

ruby-on-rails - 如何使用 Rails 为所有迁移文件设置默认的 'uuid-ossp' 扩展名?

ruby读取csv,但同时读取两个不同的行

objective-c - 在 Objective-C 中拦截方法调用

Ruby:当类方法就足够时,为什么要实例化一个对象并使用实例方法?