所以我有一个类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"