开始编写Lua脚本

Begin Lua-scripting

我正处于必须学习Lua的阶段,那么您对我如何做有什么建议? 除了PHP之外,我对其他脚本语言没有太多的经验。

那么,关于" head start Lua"页面的一些建议吗?

编辑

除了精彩的教程页面之外,您能否建议我可以做的任何"程序"都可以帮助我学习Lua? 想象一下,我想学习C ++中的Pointers,我将创建一个Linked List。 我想谈谈Lua的基础知识,但同时也可以接受相当高级的知识。


首先,通过Lua编程进行工作,需要一两天的时间才能掌握Lua的要旨。

但是,我可以通过忽略协程和元表立即告诉您,它们非常强大,但是需要一段时间才能掌握。首先学习语法,作用域(很幸运,与PHP相同)和标准库。

之后,返回协程和元表,阅读它们并尝试它们,到第三遍为止,您可能会明白。除非您有很好的CS背景,否则这些都是复杂的主题

编辑:这本书是免费的在线==网站。除了这是Lua上最好的教程之外,每个人都可以从中学到Lua。

另外:如果您的目的是《魔兽世界》的Lua(可能不是,但以防万一),您可以查看本教程

并且:这是StackOverflow上的提示和技巧线程,可能有助于您从Lua中获得期望的一些想法

建议的程序/练习:

由于您最初是在寻找Lua进行Web开发的,因此请尝试理解和改进PIL中的Data Description示例。它会为您提供一些好主意,并让您对Power或Lua感到满意。

然后,您可能想尝试使用"数据结构"一章,尽管Lua只有一个复杂的数据类型"表",但该章将向您展示类似Lua的方法来使表执行您需要的任何事情。

最后,一旦您开始研究元表,就应该设计一个类系统(对Lua来说,您可以决定类系统的工作方式)。我敢肯定,每个知道Lua的人都造就了十几个类系统,面向对象编程是让您开始使用类系统的好篇章

而且,如果您有时间知道C或类似的东西(包括C#和Java),请尝试使用Lua扩展应用程序,但这需要一两个星期的时间才能完成


看到所有这些详尽的清单很有趣(尽管它们肯定是正确的)。早在2002年,我就读到了Lua参考手册的前20多页,并开始使用它。真的就是这么简单。 Lua(和ANSI C)是几种真正真正使您一次想到的语言-并留在那里。对于其他人,至少我需要不断进行一些重新学习。

请注意,开始思考Lua需要花费时间。我认为我的时间是6个月左右。当来自C / C ++时,我们倾向于以某些方式解决问题。 Lua可能提供更好的方法(即通过使用表),但是花些时间才能开始看到它们。过渡到更高的抽象级别类似于1980年代的Assembler-> C转换。许多人仍然用C编码一段时间,好像它只是一个便携式汇编程序一样。


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

如果您碰巧将Windows用作日常平台,那么我建议您将Lua for Windows软件包作为一个不错的起点。它包括各种有用的模块,所有这些模块都与??Lua解释器一起预先构建和安装。

首次阅读PiL和参考手册后,您将需要阅读Lua Programming Gems,它目前仅在纸质版本中提供。

请考虑通过Lua的图书页面或LuaForge上的关联链接购买图书以支持项目。

编辑:关于适合Lua的编程项目的想法,请查找table提供杠杆作用的问题。表是Lua的核心,因为即使全局变量也只是表中的字段。可以用除nil以外的任何数据类型的值索引表,但是如果用作数组,则表的执行效率特别高。

使来自类似C的背景的人感到奇怪的一个怪癖是,Lua中的所有事物自然都从1开始索引。字符串从1开始索引,数组从1开始等等。不要太担心它了,这里有使用a[0]没什么错,但是#a给定的数组长度是在假定数组以a[1]开头的情况下定义的。

另一个怪癖是函数实际上没有名称。它们是第一类值,通常存储在具有名称的某些变量中。语法糖使它们看起来像是具有名称一样,但这只是一个方便。

元表是表(和其他类型,但这是一个非常高级的主题)的一种特别Lua式的特性,它是大多数在Lua中进行面向对象的方案的基础。

闭包和真正的尾部调用是Lua的其他功能,在小型脚本语言中并不常见,这些语言确实可以使某些惯用法易于实现。


除了上面的建议外,还有Lua Wiki,非常值得一游。那里有很多有用的代码片段和小配方。


这是一个相当笼统的建议,但是如果您想以一种新的编程语言作为软件工程师开始使用,开始用新的编程语言解决在Euler项目中发现的问题会很有趣。我最近一直在使用Python进行此操作,发现它令人鼓舞,并给编码带来了很多热情。


我为在我正在从事的项目中使用Lua的人们写了一份简短的Lua快速入门指南。
如果您熟悉其他脚本语言,则可以快速入门。
Lua.org上的文档非常好,应该涵盖您需要的大多数其他内容。 Lua是一种很小的语言,可以很快学会。


您可以安装《魔兽世界》并为此制作一个模组(它使用Lua)。其实这可能是个坏主意。

也许尝试将Lua集成到.NET应用程序中(假设您是C#程序员),并对其进行一些"有趣"的操作:

在C#中使用Lua

或只是浏览lua.org