如果我叫Ruby对象这样可以继承Ruby全局变量吗?
def classA
@myvar = "A"
end
def classB < classA
puts @myvar
end
在Ruby中,是不是可以打印和访问@myvar?
如果我叫Ruby对象这样可以继承Ruby全局变量吗?
def classA
@myvar = "A"
end
def classB < classA
puts @myvar
end
在Ruby中,是不是可以打印和访问@myvar?
首先,红宝石类用class
关键字定义。 def
是为方法。 另外,ruby类的名字应该总是以大写字母开头。
@myvar
不是全局变量。 在ruby中,您使用美元符号创建全局变量:$myvar
。 at标志给你一个实例变量。 实例变量可用于定义它们的类中的所有方法,但它们需要通过方法进行初始化。 如果你想要一个不需要在方法内初始化的变量,你也可以使用一个类变量,例如@@myar
。 只有@@myvar
的一个副本存在,在你的类的所有实例之间共享,并且它将由子类继承。
如果你想从类的外部访问变量,你需要一个getter方法来让你访问这个变量。 一个例子是如下
class ClassA
@@myvar = "A"
end
class ClassB < ClassA
def myvar
@@myvar
end
end
b = ClassB.new
puts b.myvar
你写这样
class A
end
class B
end
一类,如果你在谈论的全局变量,这样的事情就不够好
class A
$var = 1
end
现在这$ var无处不在..它穿过墙壁!所以你也可以访问class B
。
有很多事情是错误的,那些不是类的定义,以 – nikkypx
开头。除了'puts',你不会调用任何东西。除了“A”,这里没有Ruby对象,你没有任何意义。 '@ myvar'不是全局变量。 'def'不是类定义。你不能继承方法。请阅读Ruby教程(并密切关注术语)。 – Amadan
在整个问题中,从字面上看并没有一个单词,即使是远程的也没有任何意义。这个问题如何12个小时大,还没有删除? –