所以我有一个班级球。在Ball中我们有一个方法类型。我想要做的是返回一个类型的球。棘手的部分:如果球没有参数,我想返回字符串"标准"。这处理无争论的情况就好了。然而,"足球" case保持throw并且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"
答案 0 :(得分:3)
由于您在new
上呼叫Ball
,因此您应该将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"