閱讀文件為:
Lua 5.0 Reference manual
page i
Abstract
    略述Lua是個什麼樣的語言,總之就是很好用就是了…
    並說這份文件是為了說明Lua的程式語言,和與C語言溝通的API。
   
1. Introduction
    Lua很好用,有OOP,functional的特性。functional programming是說他都是function嗎?
    Lua很powerful。他是個library,用clean C(符合ANSI C and C++的標準)寫成的。
    原來他是個Library,真強大。
   
    Lua沒有"main",他只是個embed在client的程式中,稱為embeded program或是host。
    本機的程式可以讀寫Lua的變數或是呼叫Lua的function,也可以註冊function給Lua使用。
    透過和C的合作,Lua可以做到很多事情。
   
2. The Language
    主要是講什麼語法是valid的。
    Non-terminals會用斜體表示。
    Keywords會用粗體(Bold)表示。
    terminals會用typewriter font表示。
   
    2.1 Lexical convertions.
    Identifiers跟C的差不多,只要開頭不是數字就行了。
   
    (1)~(4)的例子其實都是同樣的字串。"[["和"]]"的用法,還有"\###",###為ASCII的數字。這些用法都有點意思。
    即
    "alo\n123\"" = '\97lo\10\04923"'
    = [[alo
      123"]]
    = [[
      alo
      123"]]
     
    comments是用--           
    --相當於C語言的//。
    [[和]]則相當於/*和*/。可是[[和]]中允許有nested [[...]] pairs。沒用過,如果真的可以的話,這點到是和C不同。
   
    2.2 Values and Types
    有8種types。nil,boolean,number,string,function,userdoto,thread,和table。
    nil,就是Null啦。
    boolean是true和false。
    number是real number(double-precision floating-point)。
    string是char的arrary,可包含任何的8-bit char。   
    function…就function…副含式。Lua可呼叫C和Lua的function。
    userdata…不是很懂這是什麼,後面會再說明吧。只是這個東西,Lua不能modify和store。只能靠C API來動他。
    thread…執行緒?
    table。實作了aoociative arrays。裡面的東西可以是各種型態的混合。
    而且a.name跟a["name"]是一樣的。這跟STL的map好像啊。看起來很強大的樣子。
    table還可以裝function,或是methods…總之table是個很好的賣點吧。這裡花了不少的篇幅在說table。
   
    variables並不會存值,而是用references。Assignment,parameter passing和function return,都是操作reference。
    這些操作都不會有任何的copy。(如a = c,在C裡是把c的值copy到a裡面。)
   
    type這個function會回傳一個string來表示這個variable是什麼型態。
   
    2.2.1 Coercion
    主要是說,number和string在run time的時候,會做一些自動的型態轉換…看他們那時候的用途。
    如果要明確的把number變string,則要參考string library(see $5.3)。
    是為了方便吧…這在C裡不就是一個function…atol()或是sprintf()在做的事情嗎?算是提供方便吧…
 
沒有留言:
張貼留言