2010-07-19 117 views
11

如果在ruby文件我定义一个函数,像这样:红宝石等同于Python的__main__

def tell_the_truth() 
    puts "truth" 
end 

是有一个相当于Python的主?

if __name__ == "__main__": 
    tell_the_truth() 

它只是简单地调用文件内的函数吗?

tell_the_truth 
+2

原因Python中的'if'是防止函数被调用,如果该文件包含到另外一个,你的Ruby示例不行(据我所知) – 2010-07-19 21:44:03

+0

谢谢迈克尔。我明白为什么在python背后。为了进行比较,我尝试了将tell_the_truth()放在函数定义的下方,然后使用“require”从另一个ruby文件导入该文件。这打印出“真相”。因此,顶级语句似乎在导入文件时运行。 – Rodrigue 2010-07-20 08:10:48

回答

25

我相信这将工作:

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