Scribunto 简介/您的第一个模块
现在您已经设置了 Scribunto 的工作版本,现在该编写您的第一个 Lua 程序了。这个程序将只输出文本 "Hello, world!"。也许本身没什么用,但总得从某个地方开始。
首先,我们将在调试控制台中运行程序,这是一个文本输入框,您可以用它来尝试 Lua 代码。要找到调试控制台,请在“编辑”模式下进入任何模块页面。您应该在页面底部附近看到它。[1] 它看起来像这样
找到调试控制台后,点击文本输入框,输入以下代码,然后按回车。
按回车后,您应该在您编写的文本下方看到以下内容
恭喜!您刚刚编写了您的第一个 Lua 程序。让我们更详细地看一下代码。
程序开头的等号 (=
) 是调试控制台中使用的特殊命令,用于运行当前行的代码。它必须用在行的开头,并且只能在调试控制台中使用。因此,在我们的程序中,代码 = "Hello, world!"
表示“运行代码 "Hello, world!"
”。
两个双引号 (""
) 告诉 Lua 将它们里面的所有内容都当作文本块来处理。程序员称此类文本块为字符串。如果您不包含双引号,Lua 会认为您要输入命令,并会感到困惑。
Lua 知道你在某个地方犯了错误,但不知道具体是什么错误,所以它猜测你需要在某个地方加上 ")"(在这种情况下是错误的)。
请注意,空格无关紧要。您可以在等号和 "Hello, world!" 之间放置任意数量的空格。
在这个阶段,您可能想知道如何让我们的程序显示在维基页面上。为此,事情会稍微复杂一些。Scribunto 的创建者,以他们无限的智慧,决定 Scribunto 程序必须以某种特定的方式结构化,并且某些 Lua 函数(例如 print
函数)应该不可用。这样做是为了提高 Scribunto 用户编写的代码的质量。理论认为,教人们养成良好的习惯比使用 print
等函数的便利性更重要。这意味着,在标准 Lua 中编写一个非常简单的程序,在 Scribunto 中会变得更加复杂。我们需要编写以下代码
p = {}
function p.hello_world()
return "Hello, world!"
end
return p
要运行这段代码,我们需要创建一个新的模块页面。我们将使用 "Module:Hello",但您可以随意命名。要访问新页面,您可以使用语法 [[Module:Hello]]
创建指向您的模块的链接,然后点击该链接,或者您可以在 URL 中将页面名称替换为 "Module:Hello"。一些维基,例如英文维基百科,如果您在搜索栏中输入 "Module:Hello",也会提供一个链接供您点击。到达模块页面后,点击页面顶部的“编辑”或“创建”选项卡,以获取编辑视图。然后将上面的代码复制粘贴到编辑框中,并保存页面。您的模块现在已准备就绪,可以运行了。
您可以在维基上的任何普通页面运行代码,例如 您的用户页面 或 沙盒页面。编辑页面,并输入以下文本
{{#invoke:Hello|hello_world}}
如果您将模块命名为 "Module:Hello" 以外的其他名称,请将第一个 "Hello" 替换为您的模块名称。然后保存页面。该页面现在应该显示文本“Hello, world!”。如果成功了,给自己拍拍手吧。您刚刚编写了一个 Lua 模块,并从维基文本中显示了它;这可不是每个维基编辑都能做到的。
上面的模块代码中包含一些我们不熟悉的概念。不要太担心它们。现在,您只需要知道这段模块代码将在维基页面上生成 "Hello, world!" 就可以了。在学习本书的后续内容时,您将了解所有其他概念。