在 Ruby 中等同于 `if __name__ == '__main__'`。
在 Ruby 中等同于 `if __name__ == '__main__'`。
我是 Ruby 的新手。我想要从一个包含我想要继续独立使用的工具的模块中导入函数。在 Python 中,我会简单地这样做:
def a(): ... def b(): ... if __name__ == '__main__': a() b()
这样我就可以运行程序,或者导入它作为模块,以分别使用 a()
和/或 b()
。在 Ruby 中相应的范例是什么?
admin 更改状态以发布 2023年5月20日
如果堆栈跟踪为空,我们可以开始向右和向左执行。 我不知道这是传统用法还是非传统用法,因为我学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
从我在野外见过的 Ruby(虽然不是很多),这不是标准的 Ruby 设计模式。模块和脚本应该保持分开,因此如果没有真正的好的、干净的方法来实现这个功能,我不会感到惊讶。
编辑:找到了。
if __FILE__ == $0 foo() bar() end
但这绝对不是常见的。