Lua 程式設計教學:函式 (Function)

函式將程式碼區塊包裝起來,可以重覆再利用,也是物件導向和模組的基礎。本文介紹函式本身,其他概念留至後文介紹。

建立函式

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

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

hello()
hello()
hello()

使用參數

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

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

hello("Michael")
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"}

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

comments powered by Disqus