【Lua基础 第4章】Lua的流程控制、#的作用、table的创建方式、table表常用方法、函数、多返回值、可变长参数
创始人
2024-02-06 21:43:13
0

文章目录

  • 💨更多相关知识👇
    • 一、Lua 的流程控制
      • 🔸if语句
        • 🌟代码演示
      • 🔸if...else 语句
        • 🌟代码演示
      • 🔸if...elseif...else 语句
    • 二、#的作用
    • 三、table的创建方式
    • 四、table表的常用方法使用
      • 🔹table.concat(table, sep,start, end)
      • 🔹table.insert (table,[pos] ,value)
      • 🔹table.remove (table [pos])
      • 🔹table.sort (table [comp])
    • 五、函数
      • ⚡函数调用的注意事项
    • 六、多返回值
    • 七、可变长参数
      • 🌶️可变长参数的遍历方式1(表遍历)
      • 🌶️可变长参数的遍历方式2(select()函数)
  • 作者:KJ.JK

💨更多相关知识👇

💖Spring中的创建对象的三种方式、第三方资源配置管理详细描述及使用(XML版完结篇)

💖Spring中的bean的配置、作用范围、生命周期详细描述及使用(XML版上篇)

💖Spring中的依赖注入、setter与构造器注入、自动装配与集合注入详细描述及使用(XML版中篇)


🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈
 
🍂个人博客首页: KJ.JK
 
💖系列专栏:JavaEE进阶教程系列


一、Lua 的流程控制

语句描述
if 语句if 语句 由一个布尔表达式作为条件判断,其后紧跟其他语句组成
if…else 语句if 语句 可以与 else 语句搭配使用, 在 if 条件表达式为 false 时执行 else 语句代码
if 嵌套语句你可以在if 或 else if中使用一个或多个 if 或 else if 语句

🔸if语句

"语法:"if(布尔表达式)then--[ 在布尔表达式为 true 时执行的语句 --]end-- false和nil为假,true 和非nil为真-- 要注意的是Lua中 0 为 true

请添加图片描述


🌟代码演示

a=50
b=40
if(a>b)
then
print("a比b大")
end

请添加图片描述


🔸if…else 语句

"语法:"if(布尔表达式)then--[ 布尔表达式为 true 时执行该语句块 --]else--[ 布尔表达式为 false 时执行该语句块 --]end

请添加图片描述


🌟代码演示

a=50
b=400
if(a>b)
then
print("a比b大")
else
print("b比a大")
end

请添加图片描述


🔸if…elseif…else 语句

"语法:"if( 布尔表达式 1)then--[ 在布尔表达式 1 为 true 时执行该语句块 --]elseif( 布尔表达式 2)then--[ 在布尔表达式 2 为 true 时执行该语句块 --]elseif( 布尔表达式 3)then--[ 在布尔表达式 3 为 true 时执行该语句块 --]else--[ 如果以上布尔表达式都不为 true 则执行该语句块 --]end

二、#的作用

       "#号得到的是用整数作为索引的最开始连续部分的大小,如果遇到值为nil并且nil在table的最后,那么就会结束计算,直接返回"
--------------------------------------------------------------------------------------------------------------------------------"例子":a={10,"abc",200,nil,58,nil}print(#a)b={55,nil,20,nil,20}print(#b)a1={10,20,30,nil,20,nil}print(#a1)

请添加图片描述


三、table的创建方式

a={} -- 创建一个空白的表b={1,2,5,68} -- 创建一个数字为下标的表c={
a1=1,
b1="1254",
c=function() end,
} -- 创建一个字符串为下标的表
print(c.b1)

请添加图片描述


四、table表的常用方法使用


🔹table.concat(table, sep,start, end)

"table.concat(table, sep, start, end): 把表里面的元素进行拼接"参数含义:table: 需要拼接的表sep: 以什么来进行分隔拼接start:拼接的起始位置end:拼接的结束位置
--------------------------------------------------------------------------------------------------------------------------------tableset={"jksada","bdsada","cdas"}
print(table.concat(tableset)) -- jksadabdsadacdas
print(table.concat(tableset,",")) -- jksada,bdsada,cdas
print(table.concat(tableset,",",2,3)) --bdsada,cdas

请添加图片描述


🔹table.insert (table,[pos] ,value)

"table.insert (table, [pos,] value):在表中插入元素,如果不指定位置,默认插入到末尾"参数含义:table: 需要插入的表pos: 插入的位置,可写可不写,不写默认插入到末尾value: 插入的值--------------------------------------------------------------------------------------------------------------------------------tableset2={"abc","de","250st"}
print("插入前:")
for i, v in ipairs(tableset2) do
print(i .. ":" ..v)
endprint("--------------------------------------------------------")print("插入后:")
table.insert(tableset2,"我是插入的元素")
for i, v in ipairs(tableset2) do
print(i..":".. v)
endprint("--------------------------------------------------------")print("插入指定的位置:")
table.insert(tableset2,3,"我是插入指定的元素")
for i, v in ipairs(tableset2) do
print(i..":".. v)
end

请添加图片描述


🔹table.remove (table [pos])

"table.remove (table [, pos]): 删除元素,如果不给位置,默认删除最后一个"参数含义:table: 需要删除的表pos: 指定删除的位置,可写可不写,不写默认删除最后一个--------------------------------------------------------------------------------------------------------------------------------tableset2={12,50,87,40}
print("删除前:")
for i, v in ipairs(tableset2) do
print(i ..":"..v)
end
print("-------------------------------------------------------------")print("删除后:")
table.remove(tableset2)
for i, v in ipairs(tableset2) do
print(i ..":"..v)
endprint("-------------------------------------------------------------")print("删除指定位置后:")
table.remove(tableset2,2)
for i, v in ipairs(tableset2) do
print(i ..":"..v)
end

请添加图片描述


🔹table.sort (table [comp])

"table.sort (table [, comp]):对表进行升序排序"
--------------------------------------------------------------------------------------------------------------------------------tableset2={50,2,3,4,87}
table.sort(tableset2)
for i, v in ipairs(tableset2) do
print(v)
end

请添加图片描述


五、函数

"定义格式:"
optional_function_scope function function_name( argument1, argument2,
argument3..., argumentn)
function_body
return result_params_comma_separated
end
--------------------------------------------------------------------------------------------------------------------------------参数的含义:"optional_function_scope: 该参数是可选的制定函数是全局函数还是局部函数,未设置该参数默认为全局函数,如果你需要设置函数为局部函数需要使用关键字 local""function_name: 指定函数名称""argument1, argument2, argument3..., argumentn: 函数参数,多个参数以逗号隔开,函数也可以不带参数""function_body: 函数体,函数中需要执行的代码语句块""result_params_comma_separated: 函数返回值,Lua语言函数可以返回多个值,每个值以逗号隔开"
--------------------------------------------------------------------------------------------------------------------------------"例子:"--[[ 函数返回两个值的最大值 --]]
function max(num1, num2)
if (num1 > num2) then
result = num1;
else
result = num2;
end
return result;
end
-- 调用函数
print("两值比较最大值为 ",max(10,4))
print("两值比较最大值为 ",max(5,6))

⚡函数调用的注意事项

"1.一般情况下,函数调用时需要带上圆括号(不论函数是否带有参数"------------------------------------------------------------------------------------------------------------------------------------------------"2.当函数只有一个参数,且参数是字符串常量或者表构造器时,可以不使用圆括号"如: print "hello" ------------------------------------------------------------------------------------------------------------------------------------------------"3.面向对象风格的调用"Lua语言也为面向对象风格的调用提供了一种特殊的语法,即"冒号调用操作符"o::foo(x)------------------------------------------------------------------------------------------------------------------------------------------------"4.调用参数个数与定义参数个数不一致""调用函数时传递的参数个数"可以与"定义函数时定义的参数个数不一致",Lua会通过"抛弃多余参数"和"将不足的参数设为nil"的方式来调整参数的格式如:function f(a,b)
print(a,b)
end
f() -- nil nil
--不足的参数设为nil
f(3) -- 3 nil
f(3,4)
f(3,4,5) -- 抛弃多余的参数5

请添加图片描述


六、多返回值

"在return后列出要返回的值的列表即可返回多值"如:function maximum (a)
local mi = 1 -- 最大值索引
local m = a[mi] -- 最大值
for i,val in ipairs(a) do
if val > m then
mi = i
m = val
end
end
return m, mi
end
print(maximum({8,10,23,12,5}))

七、可变长参数

"Lua支持可变长参数函数,“可变长参数”是使用三个点(...)组成的可变长参数表达式"如:
function add(...)
local s=0
for i, v in ipairs{...} do
s=s+v
end
return s
end
print(add(1,9,8,5))

请添加图片描述


🌶️可变长参数的遍历方式1(表遍历)

"要遍历可变长参数,可以使用表达式{...}将可变长参数放在一个表中""不过,如果可变长参数中包含无效的nil,那么{...}获得的表可能不再是一个有效的序列。此时,就没有办法在表中判断原始参数究竟是不是以nil结尾的"--------------------------------------------------------------------------------------------------------------------------------function foo(...)
a={...}
for i = 1, #a do
print(a[i])
end
end
foo("a","b",10)
print("----------------------------------")
foo("a","b",{"helloworld"},10)

请添加图片描述


🌶️可变长参数的遍历方式2(select()函数)

"select()函数的参数1决定了该函数的行为:"* select(n, …): 返回第n个参数后的所有参数* select('#', …): 返回可变参数的长度

请添加图片描述


作者:KJ.JK

文章对你有所帮助的话,欢迎给个赞或者 star,你的支持是对作者最大的鼓励,不足之处可以在评论区多多指正,交流学习

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...