閱讀文件為:
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()在做的事情嗎?算是提供方便吧…
沒有留言:
張貼留言