Wenn ich ein Ruby-Objekt wie dieses nennenKönnen globale Ruby-Variablen vererbt werden?
def classA
@myvar = "A"
end
def classB < classA
puts @myvar
end
In Rubin, ist es möglich und Zugang @myvar drucken?
Wenn ich ein Ruby-Objekt wie dieses nennenKönnen globale Ruby-Variablen vererbt werden?
def classA
@myvar = "A"
end
def classB < classA
puts @myvar
end
In Rubin, ist es möglich und Zugang @myvar drucken?
Zuerst werden Ruby-Klassen mit dem Schlüsselwort class
definiert. def
ist für Methoden. Rubin-Klassennamen sollten immer mit einem Großbuchstaben beginnen.
@myvar
ist keine globale Variable. in Ruby erstellen Sie globale Variablen ein Dollarzeichen mit: $myvar
. Das at-Zeichen gibt Ihnen eine Instanzvariable. Instanzvariablen sind für alle Methoden in der Klasse zur Verfügung, in dem sie definiert sind, aber sie müssen durch ein Verfahren initialisiert werden. Wenn Sie eine Variable mögen, die nicht innerhalb einer Methode initialisiert werden muss, können Sie auch eine Klassenvariable verwenden, wie diese @@myar
. Es ist nur eine Kopie von @@myvar
vorhanden, die von allen Instanzen Ihrer Klasse gemeinsam genutzt wird. Sie wird von untergeordneten Klassen geerbt.
Wenn Sie von außerhalb der Klasse auf die Variable zugreifen möchten, benötigen Sie eine Getter-Methode, mit der Sie auf die Variable zugreifen können. Ein Beispiel dafür ist, wie
folgtclass ClassA
@@myvar = "A"
end
class ClassB < ClassA
def myvar
@@myvar
end
end
b = ClassB.new
puts b.myvar
Sie eine Klasse wie dieses
class A
end
class B
end
schreiben Wenn Sie über globale Variablen sprechen, so etwas wie dies würde dies genug
class A
$var = 1
end
Nun gut $ var ist überall zugänglich. Es reist durch die Wände! So können Sie auch in class B
zugreifen.
Es gibt viele Dinge, die falsch sind, das sind keine Klassendefinitionen, die mit – nikkypx
beginnen. Sie rufen hier nichts außer 'puts' an. Es gibt kein Ruby-Objekt außer "A", das Sie in keiner Weise aufrufen. '@ myvar' ist keine globale Variable. 'def' sind keine Klassendefinitionen. Sie können Methoden nicht erben. Bitte lesen Sie ein Ruby-Tutorial (und achten Sie genau auf die Terminologie). – Amadan
Es gibt buchstäblich kein einziges Wort in dieser ganzen Frage, die auch nur entfernt überhaupt Sinn macht. Wie ist diese Frage 12 Stunden alt und noch nicht gelöscht? –