rails中的initialize方法有什么作用
我试图围绕使用initialize方法的目的。 在Hartl的教程中,他使用了这个例子。
def initialize(attributes = {}) @name = attributes[:name] @email = attributes[:email] end
是否初始化将实例变量@name
和@email
设置为属性,如果是,为什么我们有参数attributes = {}
?
Ruby使用initialize
方法作为对象的构造函数。 它是Ruby语言的一部分,不是Rails框架特有的。 当您实例化一个新对象时调用它,例如:
@person = Person.new
在Class
上调用new
类级方法会分配该类的类型,然后调用该对象的initialize
方法:
http://www.ruby-doc.org/core-1.9.3/Class.html#method-i-new
所有对象都有一个默认的initialize
方法,它不接受任何参数(你不需要写一个 – 你自动获得它)。 如果您希望对象在initialize
方法中执行不同的操作,则需要定义自己的版本。
在您的示例中,您将哈希传递给initialize
方法,该方法可用于设置@name
和@email
的默认值。
你使用如下:
@person = Person.new({name: 'John Appleseed', email: 'john@some.net'})
初始化程序具有属性的默认值( attributes = {}
将默认值设置为ampty hash – {}
),这样您也可以在不必传递参数的情况下调用它。 如果你没有指定一个参数,那么attributes
将是一个空哈希,因此@name
和@email
都将是nil
值,因为这些键没有值( :name
和:email
)。