Lua 语言 快速入门
-- 两个横线开始单行的注释
--[[ 加上两个[和]表示 ---------------------------------------------------- num = 42 -- 所有的数字都是double。 s = 'walternate' -- 像Python那样的不可变的字符串。 -- do/end之类的关键字标示出程序块: -- If语句: -- 如何定义局部变量: -- ..操作符用于连接字符串: -- 未定义的变量返回nil。 aBoolValue = false --只有nil和false是fals; 0和 ''都是true! -- 'or'和 'and'都是可短路的(译者注:如果已足够进行条件判断则不计算后面的条件表达式)。 karlSum = 0 -- 使用 "100, 1, -1" 表示递减的范围: -- 通常,范围表达式为begin, end[, step]. -- 另一种循环表达方式: |
----------------------------------------------------
-- 2. 函数。 ---------------------------------------------------- function fib(n) -- 支持闭包及匿名函数: -- 返回值、函数调用和赋值都可以使用长度不匹配的list。 x, y, z = 1, 2, 3, 4 function bar(a, b, c) x, y = bar('zaphod') --> prints "zaphod nil nil" -- 函数是一等公民,可以是局部或者全局的。 -- 这些也是等价的: -- 顺便提一下,三角函数是以弧度为单位的。 -- 用一个字符串参数调用函数,不需要括号: |
----------------------------------------------------
-- 3. Table。 ---------------------------------------------------- -- Table = Lua唯一的数据结构; -- 按字典/map的方式使用Table: -- Dict的迭代默认使用string类型的key: -- String的key可以像js那样用点去引用: -- 使用任何非nil的值作为key: -- 对于数字和字符串的key是按照值来匹配的,但是对于table则是按照id来匹配。 -- 只需要一个table参数的函数调用不需要括号: for key, val in pairs(u) do -- Table 的遍历. -- _G 是一个特殊的table,用于保存所有的全局变量 -- 按list/array的方式使用: -- List 的迭代方式隐含会添加int的key: |
----------------------------------------------------
-- 3.1 元表(metatable) 和元方法(metamethod)。 ---------------------------------------------------- -- table的元表提供了一种机制,可以重定义table的一些操作。 f1 = {a = 1, b = 2} -- 表示一个分数 a/b. -- 这个是错误的: metafraction = {} setmetatable(f1, metafraction) s = f1 + f2 -- 调用在f1的元表上的__add(f1, f2) 方法 -- f1, f2 没有能访问它们元表的key,这与prototype不一样, -- 不过下面的代码是错误的,因为s没有元表: -- 元表的__index 可以重载点运算符的查找: -- 如果在table中直接查找key失败,会使用元表的__index 继续查找,并且是递归的查找 -- __index的值也可以是函数function(tbl, key) ,这样可以支持更多的自定义的查找。 -- __index、__add等等,被称为元方法。 -- __add(a, b) for a + b |
----------------------------------------------------
-- 3.2 类风格的table和继承。 ---------------------------------------------------- -- 类并不是内置的;有不同的方法通过表和元表来实现。 -- 下面是一个例子,后面是对例子的解释 Dog = {} -- 1. function Dog:new() -- 2. function Dog:makeSound() -- 6. mrDog = Dog:new() -- 7. -- 1. Dog看上去像一个类;其实它完全是一个table。 ---------------------------------------------------- -- 继承的例子: LoudDog = Dog:new() -- 1. function LoudDog:makeSound() seymour = LoudDog:new() -- 3. -- 1. LoudDog获得Dog的方法和变量列表。 -- 如果需要,子类也可以有new(),与基类的类似: |
----------------------------------------------------
-- 4. 模块 ---------------------------------------------------- --[[ 我把这部分给注释了,这样脚本剩下的部分就可以运行了 -- 假设文件mod.lua的内容是: local function sayMyName() function M.sayHello() return M -- 另一个文件也可以使用mod.lua的函数: -- require是包含模块的标准做法。 -- 下面的代码是工作的,因为在mod.lua中mod = M: -- 这是错误的;sayMyName只在mod.lua中存在: -- require返回的值会被缓存,所以一个文件只会被运行一次, -- 假设mod2.lua包含代码"print('Hi!')"。 -- dofile与require类似,只是不做缓存: -- loadfile加载一个lua文件,但是并不允许它。 -- loadstring是loadfile的字符串版本。 --]] |
|
其它翻译版本(1) |
----------------------------------------------------
-- 5. 参考文献
----------------------------------------------------
--[[
我非常兴奋的学习lua,主要是为了使用Lve 2D游戏引擎来编游戏。这就是动机。
我在黑色×××四开始中lua编程生涯的。
接着,我阅读了Lua官方编程手册。就是现在阶段。
在lua-users.org的文章大概非常值得看看。他的主题没有覆盖的是标准库:
* string library
* table library
* math library
* io library
* os library
另外,这个文件是一个合法Lua;把它保存为learn.lua,并且用“lua learn.lua”运行。
初次在tylerneylon.com写文章,这也可以作为一个github gist脚本。用Lua愉快的编程把!
--]]
转载于:https://blog.51cto.com/lujiesky/1313489
Lua 语言 快速入门相关推荐
- 高性能web平台【Lua语言快速入门】
Lua快速入门 一.Lua概述 1.1 Lua是什么 Lua 是一个小巧精妙的脚本语言,诞生于巴西的大学实验室,这个名字在葡萄牙语里的含义是"美丽的月亮".Lua开发小组的目标是开 ...
- Lua语言快速入门一
安装请看我的另一篇博客:https://blog.csdn.net/qq_42094345/article/details/107816577 hello world print:打印函数 新建一个文 ...
- Lua语言基础入门 (Lua学习一)
Lua语言快速入门 这篇博客主要是简单的讲解一下Lua的基础知识,涉及的东西不是很深,提供一些学习的思路,对具体的技术不展开介绍,网上资料很多写的都比我好,仅仅为了使用Lua,而不是做基于Lua的项目 ...
- Swift语言快速入门
Swift语言快速入门(首部同步新版官方API文档和语法的Swift图书,确保代码可编译,作者专家在线答疑,图书勘误实时跟进) 极客学院 编著 ISBN 978-7-121-24328-8 201 ...
- Lua+OpenResty快速入门
Lua+OpenResty快速入门 Lua 概念 特性 应用场景 Lua的安装 Lua的语法 第一个Lua程序 Lua的注释 标识符 关键字 运算符 全局变量&局部变量 Lua数据类型 nil ...
- Swift 1.1语言快速入门7.2使用无参函数
Swift 1.1语言快速入门7.2使用无参函数 无参数函数是指没有参数列表的函数.以下对它的声明定义.调用以及最简单的函数--空函数进行详细的讲解 7.2.1 无参函数的声明定义 函数在使用之前必 ...
- Swift教程Swift语言快速入门(内部资料)
Swift语言快速入门(内部资料) 试读下载地址:http://pan.baidu.com/s/1eQCGRHw 前言Swift教程Swift语言快速入门(内部资料)Swift教程Swift语言快速入 ...
- Common Lisp语言快速入门
zhezhelin Common Lisp语言快速入门 Lisp是软件领域的分裂力量.一方面,Lisp爱好者誓言Lisp比软件领域内的其它语言都更加快捷.整洁和强大:而反对者则辩称,不可靠的执行和库支 ...
- sql语言和php,SQL语言快速入门(三)_php
我们日常使用SQL语言的工作过程中,使用最多的还是从已经建立好的数据库中查询信息.下面,我们就来详细介绍一下如何使用SQL语言实现各种数据库查询操作. SELECT-FROM 为方便讲解,我们在数据库 ...
最新文章
- 看,这就是你心心念的研究生生活
- new file https 找不到路径_Python3用pathlib模块替代os.path进行文件路径的操作
- Boost:基于Boost的管道pipeline通信
- Linux中批量创建空白文件,在Linux中批量创建和修改文件或目录
- 排序算法--(冒泡排序,插入排序,选择排序,归并排序,快速排序,桶排序,计数排序,基数排序)
- obs命令行工具obsutil的使用测试
- php爆数据库,php+MySql注入非暴力爆数据库表段
- kali rpm 安装方法_linux下制作安装rpm包的方法
- IIS7部署网站的一些细节问题。
- Interactive cloth
- c语言函数调用费波那楔数列,【算法】费波那契数列算法
- paip.提升用户体验------c++ Qt5 实现程序图标以及动态托盘闪烁图标
- Android反编译(逆向)教程
- 海量实时广告流平台(DSP广告系统)架构设计与实践
- C++面向对象(二) Complex对象
- Postgresql 使用 Pl/python实现邮件监控
- 苹果发布了没有太多更新的 iOS 13 beta 8;一次编码、到处运行;SwiftUI 的两个特性;如何让网站加载更快...
- ios view 切上部分圆角_iOS - 指定UIView的某几个角为圆角
- 哪个邮箱可以邮件群发?vip邮箱群发邮件软件哪个好?
- cucumber生成测试报告
热门文章
- VTK:PolyData之SmoothPolyDataFilter
- VTK:相互作用之RubberBand2DObserver
- 在Qt Designer中使用样式表
- C++ kadane算法的实现之二(附完整源码)
- C语言堆排序Heap Sort算法(附完整源码)
- c++虚继承和虚函数和抽象类、接口类,聚合类
- C++decltype关键字
- c/c++的“大小,长度
- python作者 es6_ES6 全套教程 ECMAScript6 (原著:阮一峰)(1)
- python求两数最大公因数_『用python求俩个数的最大公约数和最小公倍数』