透過例子學習Lua(4)--函式的呼叫(轉)

post0發表於2007-08-12
透過例子學習Lua(4)--函式的呼叫(轉)[@more@]

  1.不定引數

  例e07.lua

  -- Functions can take a

  -- variable number of

  -- arguments.

  function funky_print (...)

  for i=1, arg.n do

  print("FuNkY: " .. arg[i])

  end

  end

  

  funky_print("one", "two")

  

  執行結果

  FuNkY: one

  FuNkY: two

  

  程式說明

  * 如果以...為引數, 則表示引數的數量不定.

  * 引數將會自動儲存到一個叫arg的table中.

  * arg.n中存放引數的個數. arg[]加下標就可以遍歷所有的引數.

  

  

  2.以table做為引數

  例e08.lua

  -- Functions with table

  -- parameters

  function print_contents(t)

  for k,v in t do

  print(k .. "=" .. v)

  end

  end

  print_contents{x=10, y=20}

  

  執行結果

  x=10

  y=20

  

  程式說明

  * print_contents{x=10, y=20}這句引數沒加圓括號, 因為以單個table為引數的時候, 不需要加圓括號

  * for k,v in t do 這個語句是對table中的所有值遍歷, k中存放名稱, v中存放值

  

  

  3.把Lua變成類似XML的資料描述語言

  例e09.lua

  function contact(t)

  -- add the contact ‘t’, which is

  -- stored as a table, to a database

  end

  

  contact {

  name = "Game Developer",

  email = "hack@ogdev.net",

  url = "http://www.ogdev.net",

  quote = [[

  There are

  10 types of people

  who can understand binary.]]

  }

  

  contact {

  -- some other contact

  }

  

  程式說明

  * 把function和table結合, 可以使Lua成為一種類似XML的資料描述語言

  * e09中contact{...}, 是一種函式的呼叫方法, 不要弄混了

  * [[...]]是表示多行字串的方法

  * 當使用C API時此種方式的優勢更明顯, 其中contact{..}部分可以另外存成一配置檔案

  

  4.試試看

  想想看哪些地方可以用到例e09中提到的配置方法呢?

  

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-951603/,如需轉載,請註明出處,否則將追究法律責任。

相關文章