我目前完全陷入了学校问题,并且认为我会寻求一些指导。
定义一个名为User的类。它的initialize方法应该以Hash作为参数。我们将参数config命名并将参数的默认值设置为空哈希:
class User
def initialize(config = {})
end
end
这个config = {}
语法为初始化提供了“默认参数”。如果有人在没有配置参数的情况下初始化User实例,则方法中的config变量将自动设置为我们给出的默认值 - 空哈希。
config参数应该用于设置用户的以下任何属性:name
,email
,bio
,age
和sex
。如果Hash参数中未提供属性,则initialize方法应将其默认值设置为“n / a”。例如:
class User
def initialize(config = {})
@name = config[:name] || "n/a"
@email = config[:email] || "n/a"
...
end
end
设置默认值是Ruby中非常常见的任务。执行此操作的基本方法是使用||
赋值运算符,即“或”。请考虑以下示例:
a = 3
a = a || 6
a #=> 3
b = b || 9
b #=> 9
解码上面条件赋值中的逻辑。
我们还需要访问初始化方法中设置的实例变量。为此,我们可以使用attr_accessor
方法声明。 attr_accessor
方法还允许我们在一行上声明多个属性。例如:
class User
attr_accessor :name, :email
def initialize(config = {})
@name = config[:name] || "n/a"
@email = config[:email] || "n/a"
# ...
end
end
完成编写User
类和initialize
方法以处理所有必需的属性。
此时我完全迷失了。提前谢谢。
答案 0 :(得分:0)
您好像已直接复制了自己的作业。我不打算为你做这项工作,但我会给你几行代码的一些提示:
def initialize(config = {})
这是在定义方法时使用默认参数值。如果用户没有提供config
哈希,则默认情况下该方法将使用空哈希。
@name = config[:name] || "n/a"
此语句使用||
进行流控制。如果设置了config[:name]
,则会将值分配给@name
。否则,它默认为" n / a"。
attr_accessor :name, :email
这是为:name
和:email
创建getter和setter的快捷方式。您的作业似乎是将bio
,age
和sex
添加为实例变量,并使用适当的默认值进行设置。