Howto übergibt einen Klassennamen als Variable an eine andere Klasse in Ruby

8

Ich versuche zu lernen, ein Multi-Klassen-Programm in Ruby zu erstellen. Ich habe eine Engine-Klasse und einige andere Klassen wie Stadt, Straße usw. codiert und habe Probleme, den Klassennamen als Variable an andere Klassen weiterzugeben. Der folgende Code löst den Fehler aus: "City.rb: 15: in 'intro': undefinierte lokale Variable oder Methodenspiel 'für # (NameError)". Ich verstehe das Problem in gewisser Weise, aber ich denke nicht, dass die Stadt etwas darüber wissen muss Spielobjekt, ich denke, es muss es nur bekommen und zurückgeben. Aber offensichtlich habe ich ein Missverständnis darüber, wie Variablen (insbesondere der Klassenname) zwischen Klassen übergeben werden. Was ist falsch in meinem Design?

%Vor%     
barerd 20.03.2012, 08:54
quelle

1 Antwort

15

Sie können wie gewohnt eine Klasse als Parameter übergeben:

%Vor%

Allerdings hängt Ihr Fehler nicht damit zusammen. Im Grunde versuchen Sie, das Objekt game innerhalb des Bereichs einer Klasse zu verwenden, aber es existiert dort noch nicht.

Um einen Verweis auf die Game-Instanz an die Klassenstadt zu übergeben, können Sie Folgendes tun:

%Vor%

und modifiziere den Konstruktor von City to

%Vor%

Dann hätte City # intro:

%Vor%

Es wird wahrscheinlich andere Fehler geben, da @street noch nicht in City definiert ist, aber das ist eine andere Sache.

    
Candide 20.03.2012, 10:19
quelle