Ruby: NoMethodError, aber warum?
Arbeitete ich auf einem einfachen Pi-Generator, während das lernen, Ruby, aber ich habe immer NoMethodError auf RubyMine 6.3.3, so entschied ich mich zu einem neuen Projekt und der neuen Klasse, mit so einfach wie möglich, und ich NOCH bekommen NoMethodError. Irgendeinen Grund?
class Methods
def hello (player)
print "Hello, " << player
end
hello ("Annie")
end
Und der Fehler den ich bekomme, ist:
C:/Users/Annie the Eagle/Documents/Coding/Ruby/Learning Environment/methods.rb:5:in `<class:Methods>': undefined method `hello' for Methods:Class (NoMethodError)
Sie sind dem Aufruf der Methode innerhalb der Klassendefinition. Ich bin mir nicht sicher, seiner gedacht.
Ich bin mir nicht sicher, wie der hintergrund / Erfahrung in OO-Programmierung so einfach zu checken: verstehen Sie den Unterschied zwischen Klassen und Instanzen (und Klassen-Methoden Instanz-Methoden)? Die Antwort meint...
Ich bin mir nicht sicher, wie der hintergrund / Erfahrung in OO-Programmierung so einfach zu checken: verstehen Sie den Unterschied zwischen Klassen und Instanzen (und Klassen-Methoden Instanz-Methoden)? Die Antwort meint...
InformationsquelleAutor Annie the Eagle | 2014-10-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Sie definiert haben, eine Instanz-Methode und versuchen, Sie zu nennen, wie eine Methode einer Klasse. So müssen Sie die Methode
hello
Methode einer Klasse, eine Instanz-Methode der KlasseMethods
.Oder, wenn Sie wollen, es zu definieren, wie Instanz-Methode dann rufen Sie es wie folgt :
Sie sollten entfernen Sie die Leerzeichen zwischen Methodennamen und in Klammern.
Ich danke Ihnen sehr!
InformationsquelleAutor Arup Rakshit
Sind Sie versuchen, rufen Sie eine Instanz-Methode als Methode einer Klasse.
Hier ist etwas code, der illustriert den Unterschied zwischen den beiden in ruby:
Und jetzt probieren Sie es aus, dem Aufruf der Methoden...
InformationsquelleAutor joshua.paling
Hast du erstellt eine Instanz-Methode, aber Sie sind auf den Aufruf einer Methode der Klasse. Um
hello("Annie")
, haben Sie, um eine Instanz von Methoden. Zum Beispiel:Diesem würde die Ausgabe
Hello, Annie
InformationsquelleAutor Sara Tibbetts
Durch die Definition einer Methode mit def method_name args definieren Sie eine Instanz-Methode, werden in jedes Objekt dieser Klasse, aber nicht in der Klasse selbst.
Auf der anderen Seite, durch def self.method_name args erhalten Sie eine Klassenmethode, die direkt in die Klasse, ohne die Notwendigkeit von instantiieren ein Objekt aus.
Also, Wenn Sie diese:
Führen Sie die Instanz-Methode auf diese Weise:
Und für die Klasse eins sollte sein:
InformationsquelleAutor sz23