实例化默认值和变量



所以我有一个类Ball。在Ball中,我们有一种方法类型。我想做的是回一串这种类型的球。棘手的部分:若球并没有参数,我想返回字符串"标准"。这可以很好地处理无争论的情况。然而,"football"情况持续抛出,ArgumentError 1表示0错误。我想做的是设置一个默认值"标准",如果没有参数传递给类型并打印给定的参数(如果它是字符串)。如何修复ArgumentError?我试过使用splat,只接受了0个参数。两者都不起作用

class Ball
  def type(ball="standard")
      ball
    end
end
Test.assert_equals Ball.new("football").ball_type, "football"
Test.assert_equals Ball.new.ball_type, "standard"

由于在Ball上调用new,因此应该将type方法重命名为initialize。当构造Ball的新实例时,将自动调用此方法。

class Ball
  def initialize(ball = "standard")
    @ball = ball
  end
end

@ball = ball表示将ball参数保存到@ball实例变量中。

当您调用Ball.new.ball_type:时,似乎还需要一种访问球类型的方法

class Ball
  def initialize ... end
  def ball_type
    @ball
  end
end

此方法只返回在initialize方法中设置的@ball实例变量的值。

经过这些修改:

Ball.new("football").ball_type # => "football"
Ball.new.ball_type # => "standard"

最新更新