Ruby全局变量可以继承吗?

时间:2016-07-26 00:34:36

标签: ruby

如果我像这样调用ruby对象

 def classA
     @myvar = "A"
 end

 def classB < classA
     puts @myvar
 end

在ruby中,是否可以打印并访问@myvar?

2 个答案:

答案 0 :(得分:0)

首先,使用class关键字定义ruby类。 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

答案 1 :(得分:0)

你写这样的课

class A 

end

class B 

end

如果你在谈论全局变量,那么这样就足够了

class A
  $var = 1
end

现在这个$ var随处可见..它穿过墙壁!因此,您也可以访问class B