擅长:python、mysql、java
<p>当Lua <code>require</code>是一个模块时,它会将它的名称作为varargs(<code>...</code>)传递给它。</p>
<p>因此,如果脚本不打算接受任何参数(从命令行或其他方式),可以使用</p>
<pre><code>if ... then
return this_mod --module case
else
main() --main case
end
</code></pre>
<p>不过,请注意,在(完全)可能的情况下,这并不是万无一失的。不过,在这一点上,你可以结合卢卡斯的回答得到:</p>
<pre><code>if not package.loaded[...] then
--main case
else --module case
end
</code></pre>
<p>仍然不是完美的(例如,如果使用<code>string</code>的第一个参数或其他已加载模块的名称调用脚本),但可能已经足够好了。在其他情况下,我听从马蒂的回答。</p>