Ruby和Python中类似于Perl Modulino的东西是什么?

3
我知道Perl有一种称为modulino的设计模式,其中库模块文件既可以作为库又可以作为脚本。在Ruby/Python中是否有相应的东西?
我认为这种设计模式对我非常有用;我正在编写相当简短但需要脚本运行的工作者。我认为将它们都从同一个地方运行会很方便。
3个回答

7

Python有__name__属性:

class MyClass(object):
    pass

if __name__ == '__main__':
    print("This will only run if you run the script explicitly, not import it")

如果你运行 python myscript.pyprint 函数将被执行。如果你从 myscript 导入 MyClass,则不会执行 print


谢谢,这正是我在寻找的。现在要找到Ruby的等效物... - codesw1tch

7

这是 Ruby 版本:

if __FILE__ == $PROGRAM_NAME #equivalent: if __FILE__ == $0
  puts "This is the main file running, it is not being required."
end

2

Perl 6内置了此功能。如果您将文件用作脚本,则定义一个名为 MAIN 的子例程将被执行:

 sub MAIN { ... }

MAIN的签名告诉Perl 6如何解析命令行参数。您可以拥有多个子例程,Perl 6将使用与其签名匹配的那个。以下是来自概述6的示例:

multi MAIN (Int $i) {...}   # foo 1
multi MAIN (Rat $i) {...}   # foo 1/2
multi MAIN (Num $i) {...}   # foo 1e6
multi MAIN ($i) {...}       # foo bar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接