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)
posted @ 2025-02-19 17:22  jf666new  阅读(11)  评论(0)    收藏  举报