我是Ruby新手。我想从包含我想要继续单独使用的工具的模块导入函数。在Python中我只想这样做:
def a():
...
def b():
...
if __name__ == '__main__':
a()
b()
这允许我运行程序或将其作为模块导入,以分别使用a()
和/或b()
。 Ruby中的等效范例是什么?
答案 0 :(得分:124)
从我在野外看到的Ruby(授予,而不是吨),这不是标准的Ruby设计模式。模块和脚本应该保持独立,所以如果没有一个好的,干净的方法,我不会感到惊讶。
编辑: Found it.
if __FILE__ == $0
foo()
bar()
end
但这绝对不常见。
答案 1 :(得分:11)
如果堆栈跟踪为空,我们可以开始向右和向左执行。我不知道这是用于传统还是非传统的,因为我已经使用Ruby大约一周了。
if caller.length == 0
# do stuff
end
概念证明:
file:test.rb
#!/usr/bin/ruby
if caller.length == 0
puts "Main script"
end
puts "Test"
file:shmest.rb
#!/usr/bin/ruby -I .
require 'test.rb'
puts "Shmest"
用法:
$ ./shmest.rb
Test
Shmest
$ ./test.rb
Main script
Test
答案 2 :(得分:3)