Python的if __name __ =="__ main__"用于GNU Smalltalk的习惯用法?

mca*_*dre 9 program-entry-point smalltalk gnu-smalltalk

这样的事情存在吗?

红宝石:

if __FILE__ == $0
    main
end
Run Code Online (Sandbox Code Playgroud)

Perl的:

unless(caller) {
    main;
}
Run Code Online (Sandbox Code Playgroud)

LUA:

if type(package.loaded[(...)]) ~= "userdata" then
    main(arg)
else
    module(..., package.seeall)
end
Run Code Online (Sandbox Code Playgroud)

mca*_*dre 1

异国情调的多线 shebang 和 argv 技巧可以完成这项工作。

请参阅罗塞塔代码

脚本化的main.st:

"exec" "gst" "-f" "$0" "$0" "$@"
"exit"

Object subclass: ScriptedMain [
    ScriptedMain class >> meaningOfLife [ ^42 ]
]

| main |

main := [
    Transcript show: 'Main: The meaning of life is ', ((ScriptedMain meaningOfLife) printString); cr.
].

(((Smalltalk getArgc) > 0) and: [ ((Smalltalk getArgv: 1) endsWith: 'scriptedmain.st') ]) ifTrue: [
    main value.
].
Run Code Online (Sandbox Code Playgroud)