我是红宝石的初学者.
我试图运行此代码,它显示运行时错误.
这段代码出了什么问题?
class Calc
attr_accessor :val1, :val2
def initialize (val1,val2)
@val1=val1
@val2=val2
end
end
a=Calc.new(2,3)
a.add_two_numbers(3)
def add_two_numbers(v3)
return @val1+@val2+v3
end
Run Code Online (Sandbox Code Playgroud)
该方法add_two_numbers没有在类上定义Calc,但是您正在使用它,就像它一样.这就是问题.
我猜你有一个NoMethodError.
更新:正如评论中所指出的,在实际中,该方法Object默认在类上定义,然后自动继承到所有类,但作为私有.这实际上意味着您将收到错误,指出正在调用私有方法.修复程序保持不变,因为总体问题是如何定义类及其方法的混淆.
修复方法是通过将类放在类主体中来定义类的方法.
class Calc
attr_accessor :val1, :val2
def initialize (val1,val2)
@val1=val1
@val2=val2
end
def add_two_numbers(v3)
return @val1+@val2+v3
end
end
Run Code Online (Sandbox Code Playgroud)