【发布时间】:2017-05-19 19:07:49
【问题描述】:
我目前完全被学校问题所困扰,并想寻求一些指导。
定义一个名为 User 的类。它的初始化方法应该以一个 Hash 作为参数。我们将参数命名为 config 并将参数的默认值设置为空哈希:
class User
def initialize(config = {})
end
end
这个config = {} 语法为初始化提供了一个“默认参数”。如果有人在没有 config 参数的情况下初始化 User 实例,方法中的 config 变量将自动设置为我们给它的默认值——一个空的 Hash。
config 参数应用于设置用户的以下任何属性:name、email、bio、age 和 sex。如果 Hash 参数中未提供属性,则初始化方法应将其默认为“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 方法以处理所有必需的属性。
此时我完全迷失了。提前致谢。
【问题讨论】:
-
只需将所有必需的属性添加到
attr_accessor的参数列表中,并按照现有模式为每个必需的属性添加一行到initialize。还是我错过了什么? -
您到底对什么感到困惑?如何为类添加属性?你对 attr_accessor 感到困惑吗?作业的其他要求是什么?因为看起来它已经完成了,您只需将其余属性添加到 users 类。