Ima*_*ist 98 ruby python program-entry-point
我是Ruby的新手.我想从包含我想要继续单独使用的工具的模块导入函数.在Python中我会这样做:
def a():
...
def b():
...
if __name__ == '__main__':
a()
b()
Run Code Online (Sandbox Code Playgroud)
这允许我运行程序或将其作为模块导入以使用a()和/或b()单独使用.Ruby中的等效范例是什么?
Mat*_*chu 126
从我在野外看到的Ruby(授予,而不是一吨),这不是标准的Ruby设计模式.模块和脚本应该保持独立,所以如果没有一个好的,干净的方法,我不会感到惊讶.
编辑: 找到它.
if __FILE__ == $0
foo()
bar()
end
Run Code Online (Sandbox Code Playgroud)
但这绝对不常见.
uKo*_*lka 11
如果堆栈跟踪为空,我们可以开始向右和向左执行.我不知道这是用于传统还是非传统的,因为我已经使用Ruby大约一周了.
if caller.length == 0
# do stuff
end
Run Code Online (Sandbox Code Playgroud)
概念证明:
file:test.rb
#!/usr/bin/ruby
if caller.length == 0
puts "Main script"
end
puts "Test"
Run Code Online (Sandbox Code Playgroud)
文件:shmest.rb
#!/usr/bin/ruby -I .
require 'test.rb'
puts "Shmest"
Run Code Online (Sandbox Code Playgroud)
用法:
$ ./shmest.rb
Test
Shmest
$ ./test.rb
Main script
Test
Run Code Online (Sandbox Code Playgroud)
if $PROGRAM_NAME == __FILE__
foo()
bar()
end
Run Code Online (Sandbox Code Playgroud)
Rubocop更喜欢这个:
if __FILE__ == $0
foo()
bar()
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18769 次 |
| 最近记录: |