我有以下结构
class A
def method1
end
end
class B
@my = A.new
def classATest
@myT.method1
end
def newTest
classATest
end
end
class C
newB = B.new
newB.newTest
end
当我运行C类时,它给出了一个错误,它找不到类A的method1(方法newtest,调用方法classATest,它使用全局变量调用method1。我做错了什么?这是不允许的?
答案 0 :(得分:2)
您的@my = A.new
行没有做任何有用的事情。它创建一个新对象并将其指定为 class B的实例变量,但是这种变量不能由B的实例使用而不需要额外的努力。您应该用以下内容替换该行:
def initialize
@myT = A.new
end
另外,你有一个错字:你在一个地方写了@my
而在另一个地方写了@myT
。
或者,按照您的方式保留代码,并将@my
和@myT
替换为常量名称,例如MyA
。 Ruby中的常量以大写字母开头,可以按照您尝试使用此变量的方式使用。