Lua 学习笔记
来源:互联网 发布:淘宝上有没有猛将气 编辑:程序博客网 时间:2024/06/05 07:09
1、关于table
Lua 中的 table 是python 中的 list 和 dict 的混合体。
t = {6, 7, 8, [3.14] = 6, s = "hello", [20] = 100)}相当于:
t = {[1] = 6, [2] = 7, [3]= 8, [3.14] = 6, ["s"] = "hello", [20] = 100}简单的看,实际上完全相当于 python 中的 dict ,不过实际对于键为整数的,是放在 list 中的,方便快速索引。当然基于节省内存的考量,对于跳跃的大整数键,依然是放在 dict 中。
比如上边的 t[20] = 100 就是放在dict 当中,但是6, 7, 8 都是放在 list 当中。
于是, 对于
t = {6, 7, 8, [3.14] = 6, s = "hello", [20] = 100, function () print("hello world") end}
#t 得到的长度为 4,也即 list 的长度,即匿名的 function 也是放在list 当中的。
所以有下边的执行结果:
2、属性的访问
同 python 一样,t.attr 的访问形式最终都转换为了 t["attr"] 的形式。
3、变量的作用域
Lua 中的变量只有 local 和 global 两种,不像 python ,有 local ,nonlocal,和 global。 而且 Lua 的 local 和 global 不是通过 end 语句块来界定的,而是用 local 关键字来申明的,否则都是 global 全局变量。
function func(x) a = 2 print(x) end
在 func 函数执行之后,便有了全局变量 a.
注意上边当 func 函数执行之前,因为没有执行 a = 2 这条语句,所以那时还不存在全局变量 a. 另外,在 Lua 中,所有的全局变量都是存在 _G 这个 table 当中的,即每次对全局变量 x 的访问,实际都是 _G["x"] 的形式。所以对于不存在的全局变量,得到的是 nil,而不是像 python当中的异常报错。
4、面向对象
Lua 的表的方法在用 : 进行定义时,含有隐藏的参数 self(不能在参数列表中显示的写出来,类似于 C++ 的 this 指针)。所以通过 “:” 定义的函数,在使用 “.” 点号来调用时,需要多传一个表示 self 的参数。所以使用 “:” 才是更好的模拟面向对象。
阅读全文
1 0
- Lua学习笔记(1)
- Lua学习笔记一
- Lua学习笔记一
- Lua学习笔记一
- Lua学习笔记一
- Lua学习笔记二
- LUA 学习笔记 01
- LUA 学习笔记 02
- LUA 学习笔记 03
- lua学习笔记
- Lua学习笔记
- LUA学习笔记
- Lua 学习笔记
- lua学习笔记
- Lua学习笔记1
- lua学习笔记
- lua学习笔记(1)
- lua学习笔记(2)
- Dubbo--
- mysql批量插入数据
- ng-model与ng-value的区别
- css height=auto不响应transition
- Java中的String为什么是不可变的? -- String源码分析
- Lua 学习笔记
- Dubbo--
- stem与plot的区别
- 数组指针和数组首地址
- javascript的语法
- Linux Mint 18.2 下载工具Axel&uGet
- PPAPI载入错误
- 函数调用方式
- PCA降维——主成分分析(principal component analysis,PCA)与LDA(线性判别分析)