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