在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Java/ 函數(shù)
數(shù)據(jù)庫訪問
循環(huán)
數(shù)組
錯誤處理
面向?qū)ο?/span>
調(diào)試
游戲開發(fā)
文件 I/O
變量
迭代器
Web 編程
模塊
函數(shù)
元表
協(xié)程
垃圾回收機制
標準庫
決策
數(shù)據(jù)類型
運行環(huán)境
操作符
字符串
基本語法
概述

函數(shù)

函數(shù)用于將一組語句組合起來完成一個任務(wù)。你可以將你的代碼分割到不同的函數(shù)中。如何將你的代碼分到不同的函數(shù)中完全由你自己決定,不過一般會按照邏輯功能進行劃分,每個函數(shù)都執(zhí)行一個特定的任務(wù)。

在 Lua 中提供了大量的內(nèi)置函數(shù)供我們使用。例如,print() 函數(shù)用于將輸入的參數(shù)輸出到終端。

函數(shù)往往也被稱作方法,子例程或過程等等。

函數(shù)定義

Lua 中函數(shù)定義的語法如下所示:  

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

Lua 中函數(shù)定義包括函數(shù)頭和函數(shù)名兩部分。如下列出函數(shù)的所有部分:

  • 可選的函數(shù)作用域:你可以使用關(guān)鍵字 local 限制函數(shù)的作用域,你也可以忽略此部分而使用默認值。函數(shù)作用域默認是全局。
  • 函數(shù)名:函數(shù)的真正名稱。函數(shù)名與函數(shù)的參數(shù)列表一起被稱為函數(shù)簽名。
  • 參數(shù):一個參數(shù)就一個占位符一樣。函數(shù)調(diào)用時,把值傳遞給參數(shù)。這個值被稱之為實際參數(shù)或直參數(shù)。參數(shù)列表指參數(shù)的類型,順序與數(shù)量。參數(shù)是可選的,一個函數(shù)可以沒有參數(shù)。
  • 函數(shù)體:函數(shù)體是代碼語句集合,定義了函數(shù)的功能。
  • 返回:在 Lua 中,可以使用 return 關(guān)鍵字同時返回多返回值,每個返回值之間使用逗號分隔。

示例

下面是函數(shù) max() 源代碼。此函數(shù)接受兩個參數(shù) num1 與 num2,返回兩個輸入?yún)?shù)的最大值。

--[[ 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ù)或簡稱形參。

函數(shù)的形參與函數(shù)中其它局部變量一樣,在函數(shù)的入口處被創(chuàng)建,函數(shù)結(jié)束時被銷毀。

調(diào)用函數(shù)

創(chuàng)建函數(shù)的時候,我們已經(jīng)定義了函數(shù)做什么。接下來,我們就可以調(diào)用函數(shù)來完成已定義的任務(wù)或功能。

當程序中調(diào)用一個函數(shù)時,程序的控制轉(zhuǎn)移到被調(diào)用的函數(shù)中。被調(diào)用的函數(shù)執(zhí)行定義的任務(wù);當 return 語句被執(zhí)行或者到達函數(shù)末尾時,程序的控制回到主程序中。

調(diào)用函數(shù)的方法很簡單,你只需要將函數(shù)要求的參數(shù)傳遞給函數(shù)就可以實現(xiàn)函數(shù)的調(diào)用。如果函數(shù)有返回值,你也可以將函數(shù)的返回值存儲下來。如下如示:

function max(num1, num2)
   if (num1 > num2) then
      result = num1;
   else
      result = num2;
   end

   return result; 
end

-- 調(diào)用函數(shù)
print("The maximum of the two numbers is ",max(10,4))
print("The maximum of the two numbers is ",max(5,6))

執(zhí)行上面的代碼,可以得到如下的輸出結(jié)果:

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

賦值與傳遞函數(shù)

在 Lua 語言中,我們可以將函數(shù)賦值給一個變量,也可以將函數(shù)作為參數(shù)傳遞給另外一個函數(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)

執(zhí)行上面的代碼,可以得到如下的輸出結(jié)果:

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

變參函數(shù)

在 Lua 語言中,使用 ... 作為參數(shù)可以創(chuàng)建參數(shù)個數(shù)可變的函數(shù),即變參函數(shù)。我們可以使用下面的這個例子來理解變參函數(shù)的概念。下面的這個例子中函數(shù)返回輸入?yún)?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))

執(zhí)行上面的代碼,可以得到如下的輸出結(jié)果:

The average is  5.5
上一篇:決策下一篇:協(xié)程