開源技術教學文件網 撰寫和使用函式 (Function)

最後修改日期為 JAN 24, 2018

函式 (function) 將某段程式碼區塊包裝起來,並給予命名,該程式碼區塊就成為一個有意義的實體。函式可以重覆再利用,也是物件導向和模組的基礎。本文介紹函式本身,其他概念留至後文介紹。

建立函式

使用 function 保留字可建立函式。以下程式建立一個簡單的函式,並重覆呼叫三次:

function hello()
  print("Hello World")
end

hello()
hello()
hello()

這個函式既沒有參數,也沒有回傳值,實務上這樣的函式實用性較低。

在函式中使用參數 (Parameters)

我們可以透過傳入參數 (parameters) 調整函式的行為,如下例:

function hello(name)
  print("Hello " .. name)
end

hello("Michelle")
hello("Jenny")
hello("Tom")

從函式回傳值

除了傳入參數外,函式也可以回傳值 (returning values),如下例:

function add(n)
  return n + 1
end

assert(add(3) == 4)

Lua 的函式允許多個回傳值,如下例:

function divmod(a, b)
  return math.floor(a / b), a % b
end

local a, b = divmod(7, 3)
assert(a == 2)
assert(b == 1)

不定參數函式

Lua 的函式可傳入任意個參數,如下例:

function sum(...)
  local s = 0
  
  for i, e in ipairs{...} do
    s = s + e
  end
  
  return s
end

assert(sum(1, 2, 3, 4, 5) == 15)

以表 (table) 做為函式的參數

若我們將表做為參數,我們可以將參數其中的細項命名,如下例:

function rename(arg)
  os.rename(arg.old, arg.new)
end

rename{old="old.txt", new="new.txt"}

這樣的好處在於不用寫死參數位置,當參數較多時易於記憶。

分享本文
Facebook Twitter LinkedIn LINE Skype EverNote GMail Yahoo Yahoo
追蹤本站
Facebook Facebook Twitter