Lua
学习一下Lua脚本x
数据类型#
据类型 | 描述 |
---|---|
nil | 无效值,比较时应该加上引号,同时会把nil看作false |
boolean | true - false |
number | 双精度浮点数 |
string | 字符串,’hello’ | ‘hello’ ; 使用 [[ ]] 表示多行字符串 |
function | 函数 |
userdata | 自定义类型 |
thread | 线程 |
table | 关联数组,索引可以是数组或字符串,索引默认从1开始;可以表示数组、列表、字典、集合、哈希表; table 是可扩展的,可以随时添加或删除元素。 |
变量#
- 变量默认值为nil
- Lua 中的变量全是全局变量,哪怕是语句块或是函数里,除非用 local 显式声明为局部变量
- 赋值参考golang的赋值
- 连接字符串:
a = "hello" .. "world"
- 没有赋到值的默认使用nil
- #len 表示数组,表的长度
循环#
while
1
2
3
4while(condition)
do
statements
endfor
这里默认就是起始值+最终值,然后每次加多少放第三个值
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21for i=1,f(x) do
print(i)
end
for i=10,1,-1 do
print(i)
end
-- 实例1 --
function f(x)
print("function")
return x*2
end
for i=1,f(5) do print(i)
end
-- print: 1 2 3 4 5 7 8 9 10
-- 实例2 --
for i = 1, #myArray do
print(myArray[i])
endrepeat… until
break | goto
流程判断#
1 | if(布尔表达式) |
函数#
1 | -- 返回一个值 -- |
迭代器#
pairs - ipairs
1 | array = {"Google", "Runoob"} |
Table#
1 | -- 初始化表 |
1 | // 数组 |
内置函数#
自己查教程吧有 strings - table 的一些操作函数
Redis#
1 | EVAL script numkeys key [key ...] arg [arg ...] |
- script: 一段Lua脚本程序
- numkeys: 用于指定键名参数的个数。
- **key [key …]**: 从 EVAL 的第三个参数开始算起,表示在脚本中所用到的那些 Redis 键(key),这些键名参数可以在 Lua 中通过全局变量 KEYS 数组,用 1 为基址的形式访问( KEYS[1] , KEYS[2] ,以此类推)。
- **arg [arg …]**: 附加参数,在 Lua 中通过全局变量 ARGV 数组访问,访问的形式和 KEYS 变量类似( ARGV[1] 、 ARGV[2] ,诸如此类)。
优点是可以保持redis执行多命令的原子性
在lua脚本中可以使用 redis.call()
来实现对redis的命令调用
实践#
1 | supperQuestion = ` |
相信看了上面的内容这个东西就很好懂了,我也懒得分析了x
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Echin の 博客!