通过我们全新的可下载指南学习 Lua

无论您是想学习 Lua 以进入游戏和媒体行业,还是只是对一种易于上手且没有上限的脚本语言感兴趣,Lua 都是一种平易近人且功能强大的编程语言。
2 位读者喜欢这篇文章。
Woman sitting in front of her computer

Ray Smith

Lua 是一种为简洁和性能而设计的编程语言,被视频游戏和多媒体公司用作前端脚本语言。它也被 Awesome 窗口管理器、Far 文件管理器、Howl 文本编辑器 以及许多其他开源项目使用,因为其清晰度和简洁的设计。Lua 也是可嵌入的,因此您可以将 Lua 代码包含在另一种语言(如 Java、C 和 C++)的代码库中,并与丰富的 C API 交互。无论您是想学习 Lua 以进入游戏和媒体行业,还是只是对一种易于上手且没有上限的脚本语言感兴趣,Lua 都是一种平易近人且功能强大的编程语言。

安装 Lua

在 Linux 上,您可以使用您的包管理器安装 Lua。您的发行版可能会为了向后兼容性而提供旧版本的 Lua。除非您有理由安装旧版本,否则请安装最新版本。

Luau(带有尾随“u”)编程语言是 Roblox 创建的 Lua 5.1 的一个流行的分支。如果您正在为 Roblox 编程使用 Luau 或 Lua,请安装 Lua 5.1。

  • 在 Windows 或 macOS 上,请访问 LuaDist
  • 或者,对于 macOS,请使用 Homebrew

Lua 入门

您可以在文本编辑器中编写 Lua 代码。不要使用文字处理器或办公应用程序。使用纯文本编辑器或 IDE,因为它们将文本保存为字面意义上的纯文本,没有任何特殊的格式字符,这些字符往往会混淆需要解释您的代码的程序。

大多数程序,包括 Lua 代码,都可以大致分为以下三个部分

  1. 设置环境: 在此部分中,您确定您希望程序可用的组件。在某些程序中,组件只是字母和数字,而在高级编码中,它们也可能包括图形和声音。

  2. 构建引擎: 在此部分中,您告诉 Lua 如何处理您提供的组件。在基本的程序中,数据被处理并生成答案。在高级编码中,此部分在用户与应用程序交互时循环运行。

  3. 开始: 除非您告诉代码开始运行,否则它什么也不做。

假设您想编写一个简单的 Lua 脚本来计算僵尸末日的机会(或者至少,生成一个您可以声称是僵尸末日机会的任意数字)。从计算机获得任意数字是困难的

-- setup

math.randomseed(os.time())
myNumber = math.random(0,100)

-- engine

function calculate()
  print("There is a " .. myNumber .. "% chance of a zombie apocalypse today.")
end

-- go

calculate()

setup 部分,您使用 math.randomseed 启动一个随机数生成器。作为随机性的来源,您使用操作系统报告的时间。这些是 Lua 的内置函数。没有人一开始就知道编程语言的所有内置函数,因此您可以从像本文这样的文章、基于任务的互联网搜索以及阅读 Lua 文档中了解它们。

接下来,您创建一个变量。我经常在变量名前加上“my”作为提醒自己,它是我为这个应用程序创建的东西,而不是 Lua 内置的东西。变量是一个可更改的(或在编程术语中为“可变的”)值。您正在计算机的 RAM 中声明空间并在那里存储数据,以便稍后可以使用它。在这种情况下,您创建的变量使用 Lua 的 math.random 函数来选择一个介于 0 和 100 之间的数字。再一次,这是一个内置函数。

engine 部分,您创建自己的函数,我称之为 calculate。术语 calculate 没有任何特别之处,只是它在这个应用程序的上下文中是有意义的。您可以将您的函数命名为几乎任何名称。无论您称之为什麽,这都是您的代码实际执行操作的部分。大多数计算机程序都有多个函数,但这是一个简单的应用程序,因此只有一个函数。calculate 函数使用内置的 Lua print 函数在屏幕上显示文本。您可能可以猜到,Lua 中的两个点 (..) 表示语句的延续,类似于省略号在英语中的作用。

最后,go 部分运行 calculate 函数。如果您忘记执行函数,那么您的应用程序永远不会运行。这就像坐在汽车里而没有转动点火开关。

节标签 setupenginego 是注释。Lua 中的注释用两个前导破折号 (--) 表示,这是一种明确告诉 Lua 忽略该行的方法。换句话说,setupenginego 不是 Lua 关键字,您不需要在代码中使用它们。它们只是一种记住如何构建代码的有用方法。

尝试多次运行您的应用程序

$ lua ./zombie.lua
There is a 78% chance of a zombie apocalypse today.
$ lua ./zombie.lua
There is a 10% chance of a zombie apocalypse today.

条件语句

在非常低的级别上,计算机根据二进制条件运行。电信号要么存在 (1) 要么不存在 (0)。这也体现在代码中,现代编程语言提供表达该二进制条件的经典方法之一是 if-then 语句。

if-then 语句使计算机分析它到目前为止收集的数据,将其与您定义的某个任意条件进行比较,然后根据它发现的内容采取一些操作。为了使您的第一个 Lua 应用程序更具动态性,您可以向您的函数添加一个 if-then 语句

function calculate()
  print("There is a " .. myNumber .. "% chance of a zombie apocalypse today.")

  if myNumber > 50 then
    print("Take an umbrella!")
  else
    print("It's a good day for gardening!")
  end

end

这个 if-then 语句使用一些基本的数学来确定应用程序当前运行报告的内容。如果僵尸末日的机会超过 50%,那么会向用户提供一些有用的建议。否则,机会必须是 50% 或更少,因此会提供不同的建议。这是一个简单的条件,它让计算机分析它生成的随机数,然后根据结果采取一种或另一种操作。

运行代码以查看结果

$ lua ./zombie.lua
There is a 71% chance of a zombie apocalypse today.
Take an umbrella!

$ lua ./zombie.lua
There is a 65% chance of a zombie apocalypse today.
Take an umbrella!

$ lua ./zombie.lua
There is a 12% chance of a zombie apocalypse today.
It's a good day for gardening!

您可以在 Lua 中使用许多其他类型的条件控制,包括 repeat-untilwhilefor 等。

学习 Lua

没有人一开始编程就懂得如何编程。如果您有兴趣学习如何编写代码,Lua 是一个很好的入门方法,因为它是一种小型语言,主要由使您作为程序员的初出茅庐的职业生涯更轻松的便利功能组成。它没有混淆许多您不太可能使用的边缘情况函数。相反,Lua 提供了您创建自己的独特函数所需的构建块,这些函数可以完全按照您的意愿执行。您需要了解的关于 Lua 的一切都在该语言的文档中提供,但如果您想继续学习该语言的演练,您也可以下载我们的电子书。到本书结尾,您将了解所有 Lua 基础知识,以及在哪里可以找到更多 Lua 函数,以便您可以继续学习高级 Lua 编程。

下载电子书

Lua 指南

Lua 是一种为简洁和性能而设计的编程语言,被视频游戏和多媒体公司用作前端脚本语言。无论您是否想要…

标签
Seth Kenlon
Seth Kenlon 是一位 UNIX 极客、自由文化倡导者、独立多媒体艺术家和 D&D 爱好者。他曾在电影和计算机行业工作,而且经常同时进行。

评论已关闭。

Creative Commons License本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。
© . All rights reserved.