2016-10-03 5 views
-2

Ich habe eine Methode in Ruby: selbst ist eine schlechte PraxisWo soll ich eine Ruby-Klassenmethode aufrufen?

class ClassOfSomeSort 
    def self.methodOfSomeSort(argument) 
    ... 
    end 

    methodOfSomeSort(5) 

end 

hörte ich die Methode in der Klasse aufrufen.

Wo soll ich es nennen? In C++ gibt es eine int main Funktion, wo es gemacht wird, aber wo ist es in Ruby gemacht?

+0

Sie können den Code nur schreiben (das wäre in Haupt sein) an dem [ "Top-Level"] (http: // Stackoverflow. com/questions/9687106/is-there-a-main-methode-in-ruby-like-in-c) sozusagen. Oder Sie können [diese Frage SO] (http://stackoverflow.com/questions/582686/should-i-define-a-main-method-in-my-ruby-scripts) – UnholySheep

+1

Ich sah nicht, warum es ist schlecht. – Aetherus

+2

Als Anmerkung sollten Ruby-Methodennamen wie 'method_of_some_sort' sein, wobei Großbuchstaben vermieden und stattdessen Unterstriche verwendet werden. Klassen sind wie das, was Sie dort haben. – tadman

Antwort

0

Ruby ist eine interpretierte Sprache, so einfaches Programm wie folgt aussehen:

print "Hello, World!" 

Und das ist alles. Sie können dieses Programm über die Befehlszeile ruby fileName.rb ausführen. In Ihrem Beispiel können Sie es einfach anrufen nach der Klassendeklaration:

class ClassX 
    def self.MethodOfMine(argument) 
    # method 
    end 
end 

ClassX.MethodOfMine(5) 
+0

'Class' ist eine Core-Objektklasse. Das Erstellen einer Instanz dieser Klasse und das anschließende Aufrufen von Methoden bedeutet, dass es sich um Instanzmethoden handelt, die sie nicht sind. – tadman

+0

@tadman richtig, danke. Fest – rsqLVo

0

Sie Klassenmethoden jederzeit anrufen können und in jedem Kontext:

class Example 
    def self.demo! 
    puts "Hello, world!" 
    end 
end 

Example.demo! 

Dies ist im Gegensatz zu beispielsweise Verfahren, bei denen Sie erstellen müssen eine Instanz von etwas. Wenn Sie keine Instanzmethoden und keine Verwendung für sie haben, definieren Sie stattdessen module auf die gleiche Weise.

0
class Example 
def self.methodOfMine(argument) 
... 
end 
end 

object = Example.methodOfMine(InsertAnything) 

Rufen Sie die Methode außerhalb der Klasse durch eine Instanz zu schaffen :)