Lua——函数
文章目錄
- 一、基本知識
- 二、函數定義
- 1.基本語法
- 2.示例演示
- 三、返回值
- 四、參數
一、基本知識
Lua 提供了許多的內建函數,你可以很方便的在程序中調用它們,如print()函數可以將傳入的參數打印在控制臺上。
Lua 函數主要有兩種用途:
1.完成指定的任務,這種情況下函數作為調用語句使用;
2.計算并返回值,這種情況下函數作為賦值語句的表達式使用。
其實和其他語言的函數功能一樣,但是感覺Lua的返回值和參數更靈敏,因為可以多返回值和可變參數。
二、函數定義
1.基本語法
optional_function_scope function function_name( argument1, argument2, argument3..., argumentn)function_bodyreturn result_params_comma_separated end參數解析:
(1)optional_function_scope: 該參數是可選的,表示函數是全局函數還是局部函數,未設置該參數默認為全局函數,如果你需要設置函數為局部函數需要使用關鍵字 local。
(2)function_name: 指定函數名稱。
(3)argument1, argument2, argument3…, argumentn: 函數參數,多個參數以逗號隔開,函數也可以不帶參數。
(4)function_body: 函數體,函數中需要執行的代碼語句塊。
(5)result_params_comma_separated: 函數返回值,Lua語言函數可以返回多個值,每個值以逗號隔開。
2.示例演示
比如求斐波那契數列:
function fib(num)local a=1local b=1local c=1if(num <= 2) thenreturn cendwhile(num > 2)doc=a+ba=bb=cnum = num-1endreturn cendprint("第5個斐波那契數列值為:",fib(10))運行結果:
三、返回值
Lua函數允許有多個返回值,返回的時候語法如下:
return num1,num2,num3示例演示:
可見,Lua函數可以返回多個返回值而且允許返回值不被接收完。
下面自己寫一個多返回值的函數:
運行結果:
四、參數
Lua 函數可以接受可變數目的參數,和 C 語言類似,在函數參數列表中使用三點 … 表示函數有可變的參數。
function average(...)local a=0table1={...}for i,v in ipairs(table1)doa=a+vendlocal sum=#table1--求參數個數return a/sum endprint(average(2,2,4,4))運行結果:
通常在遍歷變長參數的時候只需要使用 {…},然而變長參數可能會包含一些 nil,那么就可以用 select 函數來訪問變長參數了:select(’#’, …) 或者 select(n, …)
select(’#’, …) 返回可變參數的長度。
select(n, …) 用于返回從起點 n 開始到結束位置的所有參數列表。
調用 select 時,必須傳入一個固定實參 selector(選擇開關) 和一系列變長參數。如果 selector 為數字 n,那么 select 返回參數列表中從索引 n 開始到結束位置的所有參數列表,否則只能為字符串 #,這樣 select 返回變長參數的總數。
運行結果:
如上圖,當使用for循環時,table1[5]內容是nil,for循環直接到這里停止執行,但是table1還是有內容沒有打印出來,table1[5]=nil , table1[6]=9 , table1[7]=10
是因為for循環遇到內容nil就停下來了
總結
- 上一篇: Lua——运算符
- 下一篇: 简单易懂的 pwnable.kr 第一题