我正处于被迫学习 Lua 的阶段,所以你对我如何做到这一点有什么建议吗?除了 PHP,我对任何其他脚本语言都没有太多经验。
那么,关于“Head start Lua”页面的一些建议?
编辑
作为精彩教程页面的补充,您能否建议我可以制作的任何“程序”来帮助我学习 Lua?想象一下,我想学习 C++ 中的指针,我会创建一个链接列表。我想接触 Lua 的基础知识,但同时对相当高级的东西持开放态度。
首先,通过Lua 编程,你应该花一两天时间来掌握 Lua 的要点。
但是我可以在你第一次通过忽略协程和元表时立即告诉你,它们非常强大,但需要一段时间才能掌握。首先学习语法、作用域(幸运的是你和 PHP 一样)和标准库。
之后回到协程和元表,阅读它们并尝试它们,到第三遍你可能会得到它。除非你有很好的 CS 背景,否则这些都是复杂的主题
编辑:这本书是免费的在线==网站。除了它是 Lua 上最好的教程之外,每个人都用它来学习 Lua。
另外:如果您的目的是魔兽世界的 Lua(可能不是但以防万一),您可以查看本教程
并且:这是 StackOverflow 上的提示和技巧线程,可能有助于您对 Lua 的期望有所了解
建议的程序/练习:
由于您最初是在使用 Lua 进行 Web 开发,因此请尝试理解和改进 PIL 中的数据描述示例。它会给你一些好的想法和对权力或 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 。
<plug>
请考虑通过Lua 书籍页面或LuaForge上的关联链接购买书籍以支持这些项目。</plug>
编辑:至于适合 Lua 的编程项目的想法,寻找table
提供杠杆作用的问题。表是 Lua 的核心,因为即使是全局变量也只是表中的字段。表可以由除 之外的任何数据类型的值来索引nil
,但如果用作数组,则具有特别有效的实现。
一个让来自类 C 背景的人感到困惑的怪癖是 Lua 中的所有事物自然是从 1 开始索引的。字符串从 1 开始索引,数组从 1 开始,等等。不要太担心,有使用 没有错a[0]
,但由 给出的数组的长度是在#a
假设数组以 开头的情况下定义的a[1]
。
另一个怪癖是函数实际上没有名字。它们是一流的值,通常存储在某个具有名称的变量中。语法糖使它看起来像他们有名字,但这只是一种方便。
元表是表(和其他类型,但这是一个非常高级的主题)的一个特别 Lua 风格的特性,它是在 Lua 中做面向对象的事情的大多数方案的基础。
闭包和真正的尾调用是 Lua 的其他特性,这些特性在小型脚本语言中并不常见,它们可以真正使一些习语易于实现。
除了上述建议之外,还有值得一游的Lua wiki 。那里有大量有用的代码片段和小食谱。
你可以安装魔兽世界并为此制作一个模组(它使用 Lua)。实际上,这可能是个坏主意。
也许尝试将 Lua 集成到 .NET 应用程序中(假设您是 C# 程序员)并用它做一些“有趣”的事情:
或者只是浏览 lua.org
我写了一个简短的 Lua 快速入门指南,供人们在我正在从事的项目中使用它。如果您熟悉其他脚本语言,它可能会让您快速上手并运行。Lua.org上的文档非常好,应该涵盖您需要的大部分其他内容。Lua 是一种非常小的语言,可以很快学会。
这是一个非常普遍的建议,但是如果您想以软件工程师的身份开始使用新的编程语言,那么开始用您的新编程语言解决Project Euler中发现的问题会很有趣。我最近一直在用 Python 做这件事,发现它很鼓舞人心,并为编码带来了很多热情。