日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Lua——函数

發布時間:2024/4/17 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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函數可以返回多個返回值而且允許返回值不被接收完。
下面自己寫一個多返回值的函數:

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)) function fib_2(num1,num2,fibfunction)local a=fib(num1)local b=fib(num2)return a,b enda,b=fib_2(3,4,fib) print("第3個和第4個斐波那契數列為:",a,b)

運行結果:

四、參數

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 返回變長參數的總數。

function fun(...)print("傳入了"..select('#',...).."個參數")table1={select(4,...)}print("從第4個參數開始向后是:")for i,v in ipairs(table1)doprint(v)endprint("table1中索引為6的和索引為7的內容為:")print(table1[6],table1[7]) endprint("當傳入10個參數,且第8個為nil時:") fun(1,2,3,4,5,6,7,nil,9,10)

運行結果:

如上圖,當使用for循環時,table1[5]內容是nil,for循環直接到這里停止執行,但是table1還是有內容沒有打印出來,table1[5]=nil , table1[6]=9 , table1[7]=10
是因為for循環遇到內容nil就停下來了

總結

以上是生活随笔為你收集整理的Lua——函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。