Lua
目录
1. 语法
1.1. 注释
-- 这是单行注释
--[[
这是多行注释
]]
1.2. 变量
1.3. 作用域
- 只有2种
- 局部变量,local修饰
- 全局变量,非局部变量,local修饰,不管你在哪里(函数,还是语句块)
1.4. 空---nil
- nil
类似java的null
1.5. 布尔
* nil、false 是false。比js还要飘
* 其它都是true(0,空字符串,'\0'')
1.6. 判断符
- 相等, ==
数字,字符串 - 不等于 ~=
数字,字符串 - 大于小于,> , <
数字
2. 数据类型
2.1. 数字类型
- 只有double型
num = 1
num = 3.0
num = 3.1415
num = 314e-2
num = 0.314E1
num = 0xff
2.2. 字符串
- 引号问题
可用单引号,也可用双引号 - 转义符
和java差不多 - 连接符
2个点点..
ip = '127.0.0.1'
-- 支持一段文字
str = [[
第一行"
第2行"
]]
print(str)
2.3. Table
- 哈希表,类似于js的json对象
nezha = {
name='nezha',
age=3,
height=0.77
}
-- 打印该nezha对象的内存地址
print(nezha)
print(nezha.name)
2.4. 数组
索引从1开始
arr = {"nezha",3.14e0, {3,2},function() print("数组中的的函数") return 1 end}
print(arr[1])
-- 打印函数的语法
print(arr[4]())
2.4.1. 遍历
arr = {"nezha",3.14e0, {3,2},function() print("数组中的的函数") return 1 end}
for k,v in pairs(arr) do
print(k, v)
end
--[[
eclipse可能又是从1到4输出。
浏览器在线模拟输出;
4 function: 0x155
3 table: 0x154
2 3.14
1 nezha
]]
2.5. 循环
2.5.1. for循环
--[[
最终会打印 7,5,3,1
i=7 i初始值为7,
1,指i的上限为1,i需要大于1,才会执行pint(i)
-2,指 i每次减2
]]
-- 降序
for i=7,1, -2 do
print(i)
end
--[[
最终会打印1,3,5
i=1 i初始值为1
5 i的极限为5
2 i每次加2
]]
-- 升序
for i = 1, 5, 2 do
print(i)
end
2.5.2. while循环
count = 0
while count <= 10 do
count = count + 1
log.info("任务","运行了",count,"次")
end
2.6. if-else
-- 逻辑与是and,和py一样
age = 0
gender = 'man'
if age == 40 and gender ~= 'lady' then
print("40女人如花")
elseif age == 0 then
print("婴儿宝宝")
else
print("未知")
end
3. 函数
3.1. 普通函数
- 语法示例
function add( x,y )
return y+x
end
sum = add(3.1, 1.7777)
print(sum)
3.2. 匿名函数
function add( x,y )
local result = 0
return function(y,x)
result = x + y
return result
end
end
sum = add(3.1, 1.7777)
print(sum)
3.3. 对象函数
nezha = {
name='nezha',
age=3,
height=0.77
}
function nezha.eat( food )
print(nezha.name .. " eating " ..food)
end
nezha.eat("大西瓜")
3.4. return
可以返回多个值
--[[
返回2个参数
第一个: 布尔
第二个:接受的参数
]]
function isGirl(user )
return user == 'girl' , user
end
bol, name = isGirl('girl')
-- 输出 true,girl
print(bol, name)
bol2, name2 = isGirl('girl2')
-- 输出 false,girl2
print(bol2, name2)

浙公网安备 33010602011771号