函數(shù)是一組一起執(zhí)行任務(wù)的語句??梢园汛a放到獨(dú)立的函數(shù)中。怎么劃分代碼功能之間的不同,但在邏輯上劃分通常是讓每個函數(shù)執(zhí)行特定的任務(wù)。
Lua語言提供了程序可以調(diào)用大量的內(nèi)置方法。例如,方法print()打印作為輸入傳參數(shù)在控制臺中。
函數(shù)是已知的各種名稱,如方法或子程序或程序等。
定義一個函數(shù)
在Lua編程語言中的方法的定義一般形式如下:
復(fù)制代碼 代碼如下:
optional_function_scope function function_name( argument1, argument2, argument3..., argumentn)
function_body
return result_params_comma_separated
end
在 Lua 編程語言的方法定義包括方法頭和方法體。這里是方法的所有部件
- 可選函數(shù)適用范圍:可以使用關(guān)鍵字本地范圍的限制功能或忽略的范圍部分,這將使它成為一個全局函數(shù)。
- 函數(shù)名稱:這是函數(shù)的實際名稱。函數(shù)名和參數(shù)列表一起構(gòu)成了函數(shù)簽名。
- 參數(shù):一個參數(shù)是像占位符。當(dāng)調(diào)用一個函數(shù),將值傳遞給參數(shù)。這個值被稱為實際參數(shù)或參數(shù)。參數(shù)列表是指類型,順序和數(shù)量的方法的參數(shù)。參數(shù)是可選的;也就是說,方法可能沒有參數(shù)。
- 函數(shù)體:方法主體包含了定義方法做什么的語句的集合。
- 返回:在Lua中可以通過下面的逗號分隔的返回值,return關(guān)鍵字返回多個值。
例子:
下面是一個函數(shù)的源代碼調(diào)用max()。這個函數(shù)有兩個參數(shù)num1與num2并返回兩者之間的最大值:
復(fù)制代碼 代碼如下:
--[[ function returning the max between two numbers --]]
function max(num1, num2)
if (num1 > num2) then
result = num1;
else
result = num2;
end
return result;
end
函數(shù)參數(shù):
如果一個函數(shù)使用參數(shù),它必須聲明接受的參數(shù)值變量。這些變量被函數(shù)的形式參數(shù)調(diào)用。
正式的參數(shù)表現(xiàn)得就像在函數(shù)內(nèi)部其他本地變量和在進(jìn)入函數(shù)創(chuàng)建并在退出時銷毀。
調(diào)用函數(shù):
當(dāng)創(chuàng)建一個Lua函數(shù),給什么樣的功能,必須做一個定義。要使用一個方法,將不得不調(diào)用該函數(shù)來執(zhí)行定義的任務(wù)。
當(dāng)程序調(diào)用一個函數(shù),程序的控制轉(zhuǎn)移到被調(diào)用的函數(shù)。被調(diào)用函數(shù)進(jìn)行定義的任務(wù)和在執(zhí)行它的return語句或當(dāng)其功能的終端到達(dá)時,程序控制返回到主程序。
而調(diào)用只是需要傳遞所需的參數(shù)以及方法名的方法,如果方法返回一個值,那么你可以存儲返回的值。例如:
復(fù)制代碼 代碼如下:
function max(num1, num2)
if (num1 > num2) then
result = num1;
else
result = num2;
end
return result;
end
-- calling a function
print("The maximum of the two numbers is ",max(10,4))
print("The maximum of the two numbers is ",max(5,6))
當(dāng)我們運(yùn)行上面的代碼中,將得到下面的輸出。
復(fù)制代碼 代碼如下:
The maximum of the two numbers is 10
The maximum of the two numbers is 6
分配和傳遞函數(shù)
在Lua中,我們可以指定函數(shù)的變量,也可以將它們作為另一個函數(shù)的參數(shù)。下面是一個簡單的例子,用來分配Lua傳遞一個函數(shù)作為參數(shù)。
復(fù)制代碼 代碼如下:
myprint = function(param)
print("This is my print function - ##",param,"##")
end
function add(num1,num2,functionPrint)
result = num1 + num2
functionPrint(result)
end
myprint(10)
add(2,5,myprint)
當(dāng)我們運(yùn)行上面的代碼中,將得到下面的輸出。
復(fù)制代碼 代碼如下:
This is my print function - ## 10 ##
This is my print function - ## 7 ##
函數(shù)與變量參數(shù)
可以在Lua中創(chuàng)建一個具有可變參數(shù)的函數(shù)......作為它的參數(shù)。我們可以通過看一個例子,利用可變參數(shù)該函數(shù)將返回平均值。
復(fù)制代碼 代碼如下:
function average(...)
result = 0
local arg={...}
for i,v in ipairs(arg) do
result = result + v
end
return result/#arg
end
print("The average is",average(10,5,3,4,5,6))
當(dāng)我們運(yùn)行上面的代碼中,將得到下面的輸出。
復(fù)制代碼 代碼如下:
The average is 5.5
您可能感興趣的文章:- Lua中的一些常用函數(shù)庫實例講解
- Lua中的函數(shù)知識總結(jié)
- 舉例簡介Lua中函數(shù)的基本用法