【在主画面加入捷径】
       
【选择语系】
繁中 简中

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"}

    这样的好处在于不用写死参数码置,当参数较多时易于记忆。