gpt4 book ai didi

ruby-on-rails - Rails中的initialize方法有什么作用

转载 作者:行者123 更新时间:2023-12-03 10:14:34 25 4
gpt4 key购买 nike

我正在尝试使用initialize方法的目的。在Hartl的教程中,他使用了示例。

def initialize(attributes = {})
@name = attributes[:name]
@email = attributes[:email]
end

初始化是否将实例变量 @name@email设置为属性,如果是,为什么要使用参数 attributes = {}

最佳答案

Ruby使用initialize方法作为对象的构造函数。它是Ruby语言的一部分,并非特定于Rails框架。当您实例化一个新对象时,将调用它:

@person = Person.new

new上调用 Class类级别方法会分配该类的类型,然后调用该对象的 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哈希- {})是为了使您也可以调用它而不必传递参数。如果不指定参数,则 attributes将为空哈希,因此 @name@email均为 nil值,因为这些键( :name:email)不存在任何值。

关于ruby-on-rails - Rails中的initialize方法有什么作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13216976/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com