Lua - 函式



函式是一組語句,它們共同執行一項任務。您可以將程式碼分成單獨的函式。如何將程式碼劃分為不同的函式取決於您,但邏輯上劃分通常是唯一的,因此每個函式都執行特定的任務。

Lua 語言提供了許多內建方法,程式可以呼叫這些方法。例如,方法 print() 用於在控制檯列印作為輸入傳遞的引數。

函式以各種名稱而聞名,例如方法、子例程或過程等。

定義函式

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

optional_function_scope function function_name( argument1, argument2, argument3........, 
argumentn)
function_body
return result_params_comma_separated
end

Lua 程式語言中的方法定義由方法頭方法體組成。以下是方法的所有部分:

  • 可選函式作用域 - 您可以使用關鍵字local來限制函式的作用域或忽略作用域部分,這將使其成為全域性函式。

  • 函式名稱 - 這是函式的實際名稱。函式名稱和引數列表共同構成函式簽名。

  • 引數 - 引數就像一個佔位符。當呼叫函式時,您將值傳遞給引數。此值稱為實際引數或引數。引數列表指的是方法的引數型別、順序和數量。引數是可選的;也就是說,方法可能不包含任何引數。

  • 函式體 - 函式體包含定義函式功能的一組語句。

  • 返回值 - 在 Lua 中,可以透過在 return 關鍵字後跟逗號分隔的返回值來返回多個值。

示例

以下是名為 max() 的函式的原始碼。此函式接收兩個引數 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

函式引數

如果函式要使用引數,則必須宣告接受引數值的變數。這些變數稱為函式的形式引數

形式引數在函式內部的行為與其他區域性變數相同,並在進入函式時建立,並在退出時銷燬。

呼叫函式

在建立 Lua 函式時,您會給出函式必須執行的操作的定義。要使用方法,您必須呼叫該函式以執行定義的任務。

當程式呼叫函式時,程式控制權將轉移到被呼叫的函式。被呼叫的函式執行定義的任務,當執行其 return 語句或到達其函式的末尾時,它將程式控制權返回到主程式。

要呼叫方法,您只需將所需的引數與方法名稱一起傳遞,如果方法返回值,則可以儲存返回值。例如:

main.lua

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))

輸出

當我們執行以上程式碼時,我們將得到以下輸出。

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

賦值和傳遞函式

在 Lua 中,我們可以將函式賦值給變數,也可以將它們作為另一個函式的引數傳遞。以下是在 Lua 中賦值和傳遞函式作為引數的簡單示例。

main.lua

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)

輸出

當我們執行以上程式碼時,我們將得到以下輸出。

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

具有可變引數的函式

在 Lua 中,可以使用 '...' 作為引數來建立具有可變引數的函式。我們可以透過檢視一個示例來了解這一點,在該示例中,函式將返回平均值,並且可以採用可變引數。

main.lua

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))

輸出

當我們執行以上程式碼時,我們將得到以下輸出。

The average is	5.5
廣告

© . All rights reserved.