相当于用于Ruby、Python的Perl Modulino?
我知道Perl有一种称为modulino的设计模式,在这种模式中,库模块文件可以充当库和脚本。在Ruby/Python中是否有与此等价的东西 我认为这种设计模式对我非常有用;我正在编写相当短的worker,但也需要一个脚本来运行它们。我想把这些都放在同一个地方比较方便相当于用于Ruby、Python的Perl Modulino?,python,ruby,perl,modulino,Python,Ruby,Perl,Modulino,我知道Perl有一种称为modulino的设计模式,在这种模式中,库模块文件可以充当库和脚本。在Ruby/Python中是否有与此等价的东西 我认为这种设计模式对我非常有用;我正在编写相当短的worker,但也需要一个脚本来运行它们。我想把这些都放在同一个地方比较方便 谢谢大家! Python有\uuuuu name\uuuu: class MyClass(object): pass if __name__ == '__main__': print("This will onl
谢谢大家! Python有
\uuuuu name\uuuu
:
class MyClass(object):
pass
if __name__ == '__main__':
print("This will only run if you run the script explicitly, not import it")
如果运行
python myscript.py
,将运行print
函数。如果从myscript
导入MyClass
,则打印将不会。这是Ruby版本:
if __FILE__ == $PROGRAM_NAME #equivalent: if __FILE__ == $0
puts "This is the main file running, it is not being required."
end
Perl6内置了这个特性。定义名为MAIN
的子例程,如果将文件用作脚本,则该子例程将执行:
sub MAIN { ... }
MAIN
的签名告诉Perl6如何解析命令行参数。您可以使用multi-sub,Perl 6将使用签名匹配的sub。以下是来自以下方面的示例:
谢谢,这正是我想要的。现在要找到Ruby的等价物。。。
multi MAIN (Int $i) {...} # foo 1
multi MAIN (Rat $i) {...} # foo 1/2
multi MAIN (Num $i) {...} # foo 1e6
multi MAIN ($i) {...} # foo bar