跳转到内容

Scribunto 简介/您的第一个模块

来自维基教科书,开放世界中的开放书籍

现在您已经设置了 Scribunto 的工作版本,现在该编写您的第一个 Lua 程序了。这个程序将只输出文本 "Hello, world!"。也许本身没什么用,但总得从某个地方开始。

调试控制台

[编辑 | 编辑源代码]

首先,我们将在调试控制台中运行程序,这是一个文本输入框,您可以用它来尝试 Lua 代码。要找到调试控制台,请在“编辑”模式下进入任何模块页面。您应该在页面底部附近看到它。[1] 它看起来像这样

A grey text-entry box with usage instructions above, and a "clear" button below.
Scribunto 调试控制台。

找到调试控制台后,点击文本输入框,输入以下代码,然后按回车。

代码:

= "Hello, world!"

按回车后,您应该在您编写的文本下方看到以下内容

输出:

Hello, world!

恭喜!您刚刚编写了您的第一个 Lua 程序。让我们更详细地看一下代码。

程序开头的等号 (=) 是调试控制台中使用的特殊命令,用于运行当前行的代码。它必须用在行的开头,并且只能在调试控制台中使用。因此,在我们的程序中,代码 = "Hello, world!" 表示“运行代码 "Hello, world!"”。

两个双引号 ("") 告诉 Lua 将它们里面的所有内容都当作文本块来处理。程序员称此类文本块为字符串。如果您不包含双引号,Lua 会认为您要输入命令,并会感到困惑。

代码:

= Hello, world!

输出:

Lua error in console input at line 6: ')' expected near '!'.

Lua 知道你在某个地方犯了错误,但不知道具体是什么错误,所以它猜测你需要在某个地方加上 ")"(在这种情况下是错误的)。

请注意,空格无关紧要。您可以在等号和 "Hello, world!" 之间放置任意数量的空格。

代码:

=        "Hello, world!"

输出:

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!" 就可以了。在学习本书的后续内容时,您将了解所有其他概念。

  1. 调试控制台需要 JavaScript 才能运行。对于大多数人来说,JavaScript 默认情况下是开启的,但如果您将其禁用,则无法使用调试控制台。如果您启用了 JavaScript 但调试控制台不可见,则可能是 JavaScript 冲突阻止了它加载。请联系您的维基技术支持人员寻求帮助。对于维基媒体维基,英文维基百科的 技术村庄公告板 可能可以提供帮助。
华夏公益教科书