在RUby

时间:2017-05-19 19:07:50

标签: ruby hash

我目前完全陷入了学校问题,并且认为我会寻求一些指导。

定义一个名为User的类。它的initialize方法应该以Hash作为参数。我们将参数config命名并将参数的默认值设置为空哈希:

class User
  def initialize(config = {})
  end
end

这个config = {}语法为初始化提供了“默认参数”。如果有人在没有配置参数的情况下初始化User实例,则方法中的config变量将自动设置为我们给出的默认值 - 空哈希。

config参数应该用于设置用户的以下任何属性:nameemailbioagesex 。如果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方法以处理所有必需的属性。

此时我完全迷失了。提前谢谢。

1 个答案:

答案 0 :(得分:0)

您好像已直接复制了自己的作业。我不打算为你做这项工作,但我会给你几行代码的一些提示:

def initialize(config = {})

这是在定义方法时使用默认参数值。如果用户没有提供config哈希,则默认情况下该方法将使用空哈希。

@name = config[:name] || "n/a"

此语句使用||进行流控制。如果设置了config[:name],则会将值分配给@name。否则,它默认为" n / a"。

attr_accessor :name, :email

这是为:name:email创建getter和setter的快捷方式。您的作业似乎是将bioagesex添加为实例变量,并使用适当的默认值进行设置。