2010-07-19 13 views
11

Wenn in einem Rubin-Datei definiere ich eine Funktion wie so:Rubin entspricht Python __main__

def tell_the_truth() 
    puts "truth" 
end 

ist es ein Äquivalent zu Python Haupt?

if __name__ == "__main__": 
    tell_the_truth() 

Ist es einfach, die Funktion in der Datei aufzurufen?

tell_the_truth 
+2

Der Grund für die 'if' in Python ist die Funktion, zu verhindern, aufgerufen wird, wenn die Datei in ein anderes enthalten ist, der Ruby Beispiel nicht (soweit ich weiß) –

+0

Danke Michael. Ich verstehe das Warum hinter dem Wenn in Python. Um zu vergleichen, habe ich versucht, tell_the_truth() direkt unter der Funktionsdefinition zu setzen und dann diese Datei mit "require" aus einer anderen Ruby-Datei zu importieren. Das druckt "Wahrheit". Daher scheint die Anweisung auf oberster Ebene ausgeführt zu werden, wenn eine Datei importiert wird. – Rodrigue

Antwort

25

Ich glaube, das funktioniert:

if __FILE__ == $0 
    tell_the_truth() 
end 
1
if __FILE__ == $PROGRAM_NAME 
    tell_the_truth() 
end