Lua-基本语法二

字符串长度

a = "张三";
-- 长度为六
print(#a)
b = "aaa"
-- 长度为三
print(#b)

方法

  • 没有返回
function Do(a,b)
    print(a,b);
end
Do(1,2);
  • 有返回值
function Do(a,b)
    return a+b
end
print(Do(2,3))
  • 多返回值
function Do(a,b)
    return a+b,a-b,a*b,a/b
end
local a,b,c,d = Do(1,2);
print(a,b,c,d);
  • 不需要定义传入值得类型,不需要定义返回值得类型,要先声明方法才能进行调用。

方法作为参数进行传递

function Do(dosomething)
    if dosomething ~=nil then
        dosomething();
    end
end

-- 方法作为参数进行传递(匿名方法)
Do(function ()
    print("aaaa")
end)

function Add()
    print(1+2)
end

-- 方法作为参数进行传递
Do(Add)

可变参数

function XXX(...)
    local args = {...}
    for key, value in pairs(args) do
        print(key,value)
    end
    print("`````````````")
    for key, value in pairs(args[4]) do
        print(key,value)
    end
    -- 可变参数数量
    print(select("#",...))
    -- 输出第三位之后的
    print(select(3,...))
end

XXX(1,true,"aaa",{1,3,4})

  • 解释

  • 1:table是lua的一种数据结构,用来帮助我们创建不同的数据结构,如字典,数组。

  • 2:table可以使用任意类型的值来作为数组的索引,但不能为空。

  • 3:没有固定的大小,根据自己的需要进行扩容。

  • 4:lua是用来解决模块,包,和对象的。

-- 表 
local _myTable = {"1","2","3","4",teacher="teacher",};
-- 表长度(只显示数组部分的长度)
print("lenght",#_myTable)
-- 表中数组追加
_myTable[5] = "5"
_myTable[7] = "7"

-- 表中字典追加
_myTable.adivser = "adivser"

-- 根据索引获得对应数据
print(_myTable[1])
-- 根据键获得对应数据
print(_myTable.teacher)
-- 根据索引获得对应数据
print(_myTable["teacher"])

print (#_myTable)

-- pairs迭代器,将便利表中所有数据
for key, value in pairs(_myTable) do
    print(key,value);
end

-- ipairs迭代器,只遍历连续数组部分
for index, value in ipairs(_myTable) do
    print(index,value)
end
  • Lua不具备面向对象编程,但使用它了table可以演变成面向对象编程。
  • 表中数组部分存储的索引不是从0开始,而是从1开始的。
  • 表中数组部分自动扩容是根据二的倍数进行扩容的。
  • 使用#只能显示数组存储部分的长度。
  • pairs遍历表中所有的数据,但字典部分是无序的。
  • ipairs遍历表中数组部分数据,且索引必须是连续的,有序。
posted @ 2022-10-03 15:24  坞中客  阅读(2)  评论(0编辑  收藏  举报