Extension:Scribunto/Lua reference manual/zh

该手册介绍的Lua系MediaWiki之Scribunto扩展所用的Lua. 部分衍生自Lua 5.1 reference manual的内容以MIT协议授权.

入门
On a MediaWiki wiki with Scribunto enabled, create a page with a title starting with "Module:", for example "Module:Bananas". Into this new page, copy the following text:

在启用Scribunto的MediaWiki站点，创建以“Module:”开头的页面，比如“Module:Bananas”. 向所创新页面粘贴如下文字：

之后保存，在另一个（非模块）页面，写上：

注意应将“Bananas”改成你所创的模块名称. 这会调用该模块的“hello”函数输出. 会显示为函数返回的文字，此例为“Hello world!”.

一般最好的做法是用模板调用（invoke）Lua代码. This means that from the perspective of a calling page, the syntax is independent of whether the template logic is implemented in Lua or in wikitext.这还能避免wiki内容空间充斥复杂的语法.

模块结构
模块自身必须返回一个表（table），该表要包含 所调用的函数. 一般会如上述例子那样，用一个本地变量去声明表，然后将函数加入此表，最后于模块代码底部返回该表.

任何没有加入此表的函数，无论其为局部还是全局的，都无法用 访问；不过全局变量可由其它模块通过 载入. 良好的模块代码风格是，将所有函数与变量定义为局部.

返回文本
模块函数一般应返回简单的单行字串；任何返回值都应通过tostring，之后无分离的连接. 字串作为 的结果返回为合并的维基文字（wikitext）.

对于这一点，页面解析器和模板都不会被解释，解析器函数、扩展标签、预保存变换（比如签名波浪线扩展和管道连接技巧）都会被视为维基文字. 因此模块不可用于这些输出. 比如模块返回 时，页面效果为“Hello, world! ”.

另一方面，替换引用（subst）在先期阶段已经处理，因此 替换会被处理. 维基文字的替换依然会失败，他们会在下次编辑中被处理. 一般应避免这点.