lua 脚本是在学习 redis 时接触的,因为 redis 支持 lua 脚本,同时 Redisson 3.5 版本也是基于 lua 脚本做的分布式锁。
所以想了解一下lua脚本的基本用法。
安装环境
curl -R -O http://www.lua.org/ftp/lua-5.3.0.tar.gz
tar zxf lua-5.3.0.tar.gz
cd lua-5.3.0
make macosx test
make install
lua 基本的语法
第一次学习一个语法,肯定先是 hello world
lua 脚本是以*.lua结尾的文件
hello.lua
print("hello world")
运行
> lua hello.lua
hello world
lua 也提供了终端的交互式的方式。
还有一种方式可以将 hello.lua 定义成可执行文件
> chmod u+x hello.lua
> ./hello.lua
hello world
lua 数据类型
nil | 这个最简单,只有值nil属于该类,表示一个无效值(在条件表达式中相当于false)。 |
boolean | 包含两个值:false和true。 |
number | 表示双精度类型的实浮点数 |
string | 字符串由一对双引号或单引号来表示 |
function | 由 C 或 Lua 编写的函数 |
userdata | 表示任意存储在变量中的C数据结构 |
thread | 表示执行的独立线路,用于执行协同程序 |
table | Lua 中的表(table)其实是一个"关联数组"(associative arrays),数组的索引可以是数字、字符串或表类型。在 Lua 里,table 的创建是通过"构造表达式"来完成,最简单构造表达式是{},用来创建一个空表。 |
-- 数据类型 --
print("--------------数据类型---------------")
print(type("Hello World!"))
print(type(1*0.5))
print(type(true))
print(type(nil))
print(type(print))
-- 字符串 --
print("---------------String----------------")
str = [[
hello jay!
hhhhhhhh...
]]
print(str)
-- table --
print("--------------table-----------------")
local tb = {}
local tb2 = {"apple","orange","banana"}
-- lua 的 table 索引是从 1 开始的
for k,v in pairs(tb2) do
print("key",k)
end
print(tb2)
print(type(tb2))
-- .. 是字符串连接 --
a = {}
a["test"] = "helloworld"
key = 10
a[10] = 22
for k,v in pairs(a) do
print(k .. ":" .. v)
end
-- function 函数 --
print("------------------function 函数------------------")
-- function --
function test(n)
if n == 0 then
return -1
else
return 10 /n
end
end
print(test(5))
-- 匿名函数 --
function testFun(tab,fun)
for k,v in pairs(tab) do
print(fun(k))
end
end
print(testFun(tb2,function(key)
return (10 + key)
end
))
代码块和循环
-- 代码块? --
do
d = 6
local e = 1111
end
print(d)
print(e)
-- 循环1 while --
print("-----------while--------")
aa = 10
while(aa > 0) do
print("aa 的值:",aa)
aa = aa-1
end
-- 循环2 for --
print("-----------for-----------")
for i=1,10,1 do
print(i)
end
-- 循环3 repeat --
a = 10
repeat
print("a 的值:",a)
a = a + 1
until(a>15)
本文只简单记录了一下lua的基本使用,lua还支持协同、io等功能。