开始使用Lua脚本编程

19

我现在被迫学习Lua,你有什么建议吗?除了PHP,我没有其他脚本语言的太多经验。

所以,有关“快速入门Lua”的建议页面吗?

编辑

除了精彩的教程页面外,您能否推荐一些可以帮助我学习Lua的“程序”?假设我想学习C ++中的指针,我会制作一个链接列表。我想接触Lua的基础知识,但同时也要开放一些相当高级的东西。


2
一个小细节:Lua的名字不是首字母缩写。它应该正确拼写为“Lua”或偶尔为“lua”,但从未拼写为“LUA”。请参阅http://www.lua.org/about.html了解完整的故事。 - RBerteig
刚想发同样的评论。:P 这通常是来学习Lua的人的第一个迹象。你并不孤单。 - akauppi
Lua不是许可用户协议。 ;) - Filip Ekberg
或者最小用户访问权限,尽管微软已经尽力了;-) - RBerteig
由于您对Web开发感兴趣,请查看http://lua-users.org/wiki/LibrariesAndBindings获取最新信息。 - develCuy
在Y分钟内学习X [Lua] (https://github.com/adambard/learnxinyminutes-docs/blob/master/lua.html.markdown) - user1461607
7个回答

34

首先,逐步学习 《Lua编程》,理解Lua的基本概念可能需要一两天时间。

然而,我可以立即告诉你,在第一次学习时忽略协同程序和元表,它们非常强大,但需要花费一些时间来理解。首先学习语法、作用域(与PHP相同,对于你来说很幸运)和标准库。

在此之后,回到协程和元表,阅读并尝试使用它们,直到第三次学习时你可能会理解它们。除非您具有非常好的CS背景,否则这些都是复杂的主题。

编辑:该书免费在线==网站。另外,它是最好的Lua教程,每个人都通过它学习Lua。

还有:如果您的目的是学习用于魔兽世界的Lua(可能不是,但以防万一),您可以查看这个教程

还有:这是一个关于StackOverflow的技巧和窍门帖子,可能有助于您了解Lua的一些预期特性

建议的程序/练习:

由于您最初希望学习用于Web开发的Lua,请尝试理解并改进《Lua编程》中的数据描述示例。这将为您提供一些好主意和对Lua功能的良好感觉。

然后,您可能想要尝试玩数据结构章节,虽然Lua只有一个复杂的数据类型-表,但该章节将向您展示使表执行任何所需功能的类Lua方法。

最后,一旦你开始理解元表,你应该设计一个类系统(是的,使用Lua你可以决定你的类系统如何工作)。我相信每个了解Lua的人都制作过几个类系统,一个好的章节可以让你开始一个类系统:面向对象编程

如果你有时间并且懂得C或其他类似语言(包括C#和Java),可以尝试使用Lua扩展一个应用程序,但这会花费一两周的时间。


非常感谢。我拥有比计算机科学背景更好的东西,即(很快)获得软件工程学位 :) - Filip Ekberg
软件工程在战场上更好,但元表和协同程序是计算机科学专业的人们比工程师更关注的事情。 - Robert Gould
好的,非常感谢伙计!这不是为了魔兽世界,但当我学会LUA后,也许我应该在游戏中尝试一下。现在主要是用于Web方面的东西。 - Filip Ekberg
祝你好运,但请注意 Lua 是一种非常有吸引力且速度快的语言。有点像一辆法拉利 ;) - Robert Gould
请注意,尽管PiL书籍在线上可用,但它是第一版,关于Lua 5.0。有一些差异和更改可能会让您感到困惑。无论如何,这本书非常值得购买,写得非常好,是一个很好的参考资料。 - Jan de Vos
显示剩余3条评论

5
有趣的是看到所有这些详细的列表(尽管它们肯定是正确的)。在2002年,我读了Lua参考手册的前20多页,并开始使用它。它真的是如此简单。Lua(和ANSI C)是为数不多的可以完全适应人类思维的语言之一 - 并且会一直留在脑海中。对于其他语言,至少我需要不断进行一些重新学习。
请注意,要“思考”Lua需要时间。我认为大约需要6个月左右的时间才能从C/C++过渡到Lua。我们倾向于以某种方式解决问题。Lua可能提供更好的方法(即通过使用表),但需要一段时间才能开始看到它们。这种向更高抽象级别的过渡类似于20世纪80年代Assembler->C的转变。许多人仍然像使用便携式汇编器一样在C中编码一段时间。

4

LuaForge上还有大量与Lua相关的项目。

如果你平时使用Windows作为操作系统,我建议你从Lua for Windows软件包开始。它包含了许多有用的模块,所有的Lua解释器和预编译的模块都已经安装好了。

在阅读PiL参考手册后,你会想阅读Lua Programming Gems,但目前只有纸质版。

<plug>请考虑通过Lua书籍页面LuaForge上的关联链接购买图书以支持这些项目。</plug>

编辑:至于适合使用Lua的编程项目,可以寻找那些可以利用table的问题。表格是Lua的核心,因为即使全局变量也只是表格中的字段。表格可以通过任何数据类型的值进行索引,除了nil,但如果用作数组,则具有特别高效的实现。

一个令人困惑的问题是,所有Lua中的元素都是从1开始索引的。字符串从1开始索引,数组从1开始,等等。不要太担心这个问题,使用a[0]没有问题,但由#a给出的数组长度是假定数组以a[1]开始的。

另一个问题是函数没有真正的名称。它们是一类值,通常存储在某个具有名称的变量中。语法糖使它们看起来像有名称,但这只是一种方便。

元表是表格(和其他类型,但那是一个非常高级的主题)的一个特别Lua-ish功能,是在Lua中执行面向对象编程的大多数方案的基础。

闭包和真正的尾调用是Lua的其他特性,在小型脚本语言中很少见,可以使一些习惯用法易于实现。


2
除了上面提到的建议之外,还有值得一看的Lua wiki。这里有大量的代码片段和小技巧,非常有用。请注意保留HTML标签。

1
你可以安装《魔兽世界》并为其制作一个模组(它使用Lua)。实际上,这可能是个坏主意。
也许尝试将Lua集成到.NET应用程序中(假设你是C#程序员),并用它做一些“有趣”的事情: 使用Lua与C# 或者只需浏览lua.org。

我会忽略关于魔兽世界的部分;)但是C#部分非常好,谢谢! - Filip Ekberg

1

我为正在使用Lua的项目编写了一个快速入门指南。 如果您熟悉其他脚本语言,它可能会让您快速上手。 Lua.org上的文档非常好,应该涵盖您需要的大部分内容。 Lua是一种相当小的语言,可以很快学会。


1

这是一个相当普遍的建议,但如果你想作为一名软件工程师开始学习一门新的编程语言,那么在你的新编程语言中开始做Project Euler上的问题会很有趣。最近我一直在用Python做这个,发现它很有启发性,能够给编码带来很多热情。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接