Lua学习笔记
<p>关于Lua的<a href="http://www.lua.org/about.html" target="_blank" rel="external noopener noreferrer">官方定义</a>:</p>
别的我就不多安利了
type
table
table是类似class的hash_map,由data和method两部分组成。简而言之,数据和行为是分离的,后者在Lua中称为metatable。
metatable有很多特有的键,在此我们粗暴的认为特有键类似c++中的操作符,它们的值一般为function或table。
setmetatable
我们可以通过setmetatable来赋予table不同的动作。
1 |
t = {} |
以上代码可以缩略为:
1
t = setmetatable({}, {})
__index与__newindex
1 |
other = {} |
-
__index
类似于[]
操作符 -
__newindex
类似于[]=
操作符
1 |
t = setmetatable({}, { |
-
rawget
和rawset
可以避免调用重载后的操作符(__index和__newindex)
__tostring
1 |
t = setmetatable({ 1, 2, 3 }, { |
operator
运算符只能是函数
- __add
- __sub
- __mul
- __div
- __mod
- __unm
- __concat
- __eq
- __lt
- __le
function
一个机智的计数器
1 |
function () |
wheel
德堪邀请我入坑,考虑了一下还是可行的。
现在手头还没拿到项目,所以自己造轮子玩。