0

所以我有一个班级球。在 Ball 中,我们有一个方法类型。我想要做的是返回一个球类型的字符串。棘手的部分:如果球没有参数,我想返回字符串“标准”。这可以很好地处理无参数情况。但是,“足球”案例不断抛出 ArgumentError 1 for 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"
4

1 回答 1

3

由于您正在调用newBall因此您应该将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

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

在这些修改之后:

Ball.new("football").ball_type # => "football"
Ball.new.ball_type # => "standard"
于 2014-11-12T03:13:19.270 回答