鍍金池/ 教程/ C/ Lua函數(shù)
Lua邏輯運(yùn)算符
Lua其他運(yùn)算符
Lua協(xié)同程序
Lua break語句
Lua運(yùn)算符
Lua面向?qū)ο?/span>
Lua教程
Lua函數(shù)
Lua數(shù)據(jù)庫/MySQL操作
Lua關(guān)系運(yùn)算符
Lua錯誤處理
Lua數(shù)據(jù)類型
Lua嵌套循環(huán)
Lua變量
Lua基本語法
Lua字符串
Lua for循環(huán)
Lua if語句嵌套
Lua運(yùn)算符優(yōu)先級
Lua Web編程
Lua while循環(huán)
Lua開發(fā)環(huán)境
Lua if...else語句
Lua標(biāo)準(zhǔn)庫
Lua游戲編程
Lua if語句
Lua算術(shù)運(yùn)算符
Lua表格
Lua決策
Lua文件I/O
Lua循環(huán)
Lua數(shù)組
Lua元表
Lua repeat...until循環(huán)
Lua迭代器
Lua調(diào)試
Lua模塊
Lua垃圾收集

Lua函數(shù)

函數(shù)是一組一起執(zhí)行任務(wù)的語句??梢园汛a放到獨立的函數(shù)中。怎么劃分代碼功能之間的不同,但在邏輯上劃分通常是讓每個函數(shù)執(zhí)行特定的任務(wù)。

Lua語言提供了程序可以調(diào)用大量的內(nèi)置方法。例如,方法print()打印作為輸入傳參數(shù)在控制臺中。

函數(shù)是已知的各種名稱,如方法或子程序或程序等。

定義一個函數(shù)

在Lua編程語言中的方法的定義一般形式如下:

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并返回兩者之間的最大值:

--[[ 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ù)以及方法名的方法,如果方法返回一個值,那么你可以存儲返回的值。例如:

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)行上面的代碼中,將得到下面的輸出。

The maximum of the two numbers is 	10
The maximum of the two numbers is 	6

分配和傳遞函數(shù)

在Lua中,我們可以指定函數(shù)的變量,也可以將它們作為另一個函數(shù)的參數(shù)。下面是一個簡單的例子,用來分配Lua傳遞一個函數(shù)作為參數(shù)。

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)行上面的代碼中,將得到下面的輸出。

This is my print function -   ##	10	##
This is my print function -   ##	7	##

函數(shù)與變量參數(shù)

可以在Lua中創(chuàng)建一個具有可變參數(shù)的函數(shù)......作為它的參數(shù)。我們可以通過看一個例子,利用可變參數(shù)該函數(shù)將返回平均值。

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)行上面的代碼中,將得到下面的輸出。

The average is	5.5