💨更多相关知识👇
💖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)
end
print("--------------------------------------------------------")
print("插入后:")
table.insert(tableset2,"我是插入的元素")
for i, v in ipairs(tableset2) do
print(i..":".. v)
end
print("--------------------------------------------------------")
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)
end
print("-------------------------------------------------------------")
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,你的支持是对作者最大的鼓励,不足之处可以在评论区多多指正,交流学习