python - matplotlib设置坐标轴刻度大小 - plt.subplot



`如果__name__=='__main__'在Ruby中是等效的 (2)

我是Ruby的新手。 我正在寻找从包含我想要单独继续使用的工具的模块导入函数。 在Python中,我只需要这样做:

def a():
    ...
def b():
    ...
if __name__ == '__main__':
    a()
    b()

这使我可以运行程序或将其作为模块导入,以单独使用a()和/或b() 。 Ruby中的等效范例是什么?


Answer #1

从我在野外见过的红宝石(授予,不是一吨),这不是标准的Ruby设计模式。 模块和脚本应该保持独立,所以我不会感到惊讶,如果没有一个很好的,干净的方法来做到这一点。

编辑: 找到它。

if __FILE__ == $0
    foo()
    bar()
end

但这绝对不常见。


Answer #2

如果堆栈跟踪为空,我们可以开始执行到右侧和左侧。 我不知道这是常规还是非常规使用,因为我进入Ruby一周左右。

if caller.length == 0
  # do stuff
end

概念验证:

file: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




main