开始Lua编程脚本

我处于强制学习 Lua 的阶段,你有任何建议吗?除了 PHP,我没有太多经验使用其他脚本语言。

那么,有没有“Lua 入门”的建议页面?

编辑

除了精彩的教程页面,你能否提供一些让我学习 Lua 的“程序”建议?想象一下,如果我想学习 C++ 中的指针,我会制作一个链接列表。我想接触一些 Lua 的基础知识,同时又开放一些相当高级的东西。

原文链接 https://stackoverflow.com/questions/581074

点赞
stackoverflow用户15124
stackoverflow用户15124

首先,逐步阅读Programming in Lua,你可能需要一两天时间来理解Lua的主要概念。

然而,我可以告诉你,在你第一次阅读时可以忽略协程和元表,它们非常强大,但需要一段时间才能理解。首先学习语法,作用域(与PHP相同,幸运的是),以及标准库。

在此之后,回到协程和元表,阅读它们并尝试运用,第三次阅读时你可能会理解它们。除非你有非常好的计算机科学背景,否则这些都是复杂的话题。

编辑: 这本书是在线免费的==网站。此外,它是关于Lua最好的教程,每个人都用它来学习Lua。

而且: 如果你的目的是学习用于魔兽世界的Lua(可能不是,但以防万一),你可以查看此教程

还有: 这里有一个StackOverflow上的技巧和提示帖子,可能会帮你理解Lua所期望的一些内容。

建议的程序/练习:

由于你最初是研究Lua用于Web开发,请试着理解并改进PIL中的数据描述例子。它将为您提供一些好的想法和对Lua功能的良好感觉。

然后,你可能想尝试使用数据结构章节中的许多示例展开操作,虽然Lua只有一个复杂的数据类型,即表,但该章节将向您展示Lua的方式来让一个表做任何您需要的事情。

最后,一旦你开始理解元表,你应该设计一个类系统(是的,使用Lua,您可以决定您的类系统如何工作)。我相信学习Lua的人已经做了十几个类系统了,可以通过面向对象编程章节开始设计一个类系统。

如果你有时间并且了解C或类似的内容(包括C#和Java),尝试使用Lua扩展一个应用程序,但这需要一两个星期的时间来完成。

2009-02-24 09:27:23
stackoverflow用户37555
stackoverflow用户37555

除了上面的建议之外,还有一个 Lua Wiki 值得浏览。那里有大量的代码片段和小型配方,非常有用。

2009-02-24 10:05:18
stackoverflow用户21574
stackoverflow用户21574

你可以安装《魔兽世界》并为其制作一个 mod(它使用 Lua)。实际上,这可能不是一个好主意。

也许可以尝试将 Lua 集成到 .NET 应用程序中(假设你是 C# 程序员),然后做一些“有趣”的事情:

使用 Lua 和 C#

或者只需浏览 lua.org。

2009-02-24 10:37:53
stackoverflow用户68204
stackoverflow用户68204

LuaForge网站上也有很多与Lua相关的项目。

如果您日常使用的平台是Windows,我建议您从Lua for Windows包开始。它包括了许多有用的模块,所有的预构建和安装都与Lua解释器一起。

在您第一次阅读PiL参考手册之后,您将想要阅读Lua Programming Gems,目前仅提供纸质版本。

<plug>请考虑通过Lua的书籍页面LuaForge的联属链接购买书籍来支持该项目。</plug>

Edit: 对于适合使用Lua的编程项目的想法,可以寻找table提供支持的问题。表是Lua的核心,因为即使全局变量也仅仅是表中的字段。表可以被任何数据类型的值索引,除了nil,但如果用作数组,则具有特别高效的实现。

一个让从类似C的背景中出现问题的怪癖是Lua中所有的事情被自然地从1开始索引。字符串从1开始索引,数组从1开始,等等。不要太在意这个,使用a[0]也没有问题,但数组的长度由#a定义,假设数组从a[1]开始。

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

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

闭包和真正的尾调用是在小型脚本语言中很少见的Lua功能,它们确实可以使某些习惯用法易于实现。

2009-02-24 10:39:52
stackoverflow用户14455
stackoverflow用户14455

很有趣地看到这些详细的列表(尽管它们肯定是正确的)。在2002年,我读了Lua参考手册的前20多页,并开始使用它。它真的很简单。Lua(和ANSI C)是为数不多的几种语言,可以完全一次性融入人的思维中并保持在那里。对于其他语言,至少我需要不断进行一些重新学习。

请注意,用Lua来思考需要时间,我大概用了6个月左右。当从C/C++过来时,我们倾向于按照某种方式解决问题。Lua可能提供更好的方法(例如通过使用表),但需要一段时间才能开始看到它们。这种向更高抽象级别的转换类似于1980年代汇编语言->C语言的转变。许多人仍会用C语言进行编码,就好像它只是一种可移植的汇编语言一样。

2009-02-24 12:09:26
stackoverflow用户30470
stackoverflow用户30470

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

2009-02-24 17:10:54
stackoverflow用户68296
stackoverflow用户68296

这是一个相当通用的建议,但如果你想作为软件工程师开始使用新的编程语言,可以在你的新语言中解决Project Euler找到的问题是一种很有趣的方式。最近我用 Python 进行了这个挑战并发现它激励我,让我对编码充满了热情。

2009-02-24 17:40:54