问题:相当于Ruby中的`if __name__ ==’__main __’`
我是Ruby的新手。我正在从包含要继续单独使用的工具的模块中导入函数。在Python中,我只需执行以下操作:
def a():
...
def b():
...
if __name__ == '__main__':
a()
b()
这使我可以运行程序或将其导入为模块使用a()
和/或b()
单独使用。Ruby中的等效范例是什么?
回答 0
从我在野外看到的Ruby(当然,不是一吨)来看,这不是标准的Ruby设计模式。模块和脚本应该保持独立,因此,如果没有真正好的清洁方法,我也不会感到惊讶。
编辑: 找到了。
if __FILE__ == $0
foo()
bar()
end
但这绝对不常见。
回答 1
如果堆栈跟踪为空,我们可以从左右开始执行。我不知道这是常规使用还是非常规使用,因为我进入Ruby大约一周了。
if caller.length == 0
# do stuff
end
概念证明:
文件:test.rb
#!/usr/bin/ruby
if caller.length == 0
puts "Main script"
end
puts "Test"
文件:shmest.rb
#!/usr/bin/ruby -I .
require 'test.rb'
puts "Shmest"
用法:
$ ./shmest.rb
Test
Shmest
$ ./test.rb
Main script
Test