
ת----תصҲû˵,ʱҲͲд,֪ԭĳ֮.лл

--------------------------------------------------------------------------------------------------

ƪУҽνLuaơҼҶѧһűԣBasicCرCΪLua;Ϊűʹõġ
Lua ﷨Ƚϼ򵥣ѧϰҲȽʡȴ
LuaУһжǱ˹ؼ֡ס仰

I.  ע
дһٲע͵ġ
LuaУʹõעͺͶע͡
עУ"--"ʾע͵ĿʼһֱĩΪֹ൱C++е"//"
עУ"--[["ʾעͿʼһֱ"]]"Ϊֹע൱Cе"/**/"ע͵У"[[""]]"ǿǶ׵ġ
II.  Lua
"Hello world"ĳǱʼһԡLuaУдһĳܼ򵥣
print("Hello world")
LuaУ֮÷ֺ""Ҳÿհ׸һ˵дͬһеĻ÷ֺŸ
Lua кüֳ䣬磺

ƣif  then  elseif  then  else  end
Whileѭwhile  do  end
Repeatѭrepeat  until 
Forѭfor  = ֵյֵ do  end
Forѭfor 12 N inöٺ do  end

עһ£forѭֻforľֲҲʡԲֵʱforѭʹ1Ϊֵ
breakֹһѭ
гƵĻѧBasicC֮ģLuaҲѡLuaмطԲͬЩԵģرע⡣


C++"{""}"ģLuaУdo  end ġ磺 
do print("Hello") end
  к  жֲ

ֵ
ֵLuaǿˡͬʱֵ
磺
a,b,c,d=1,2,3,4
ǣ
a,b=b,a  -- ôĽܰ
Ĭ£ΪȫֵġҪֲڵһθֵʱҪlocal˵磺
local a,b,c = 1,2,3  -- a,b,cǾֲ

ֵ
Cһ֧ +, -, *, /Luaһ"^"ʾָ˷㡣2^3 Ϊ8, 2^4Ϊ16
ַ".."˴磺
"This a " .. "string." --  "this a string"

Ƚ
< > <= >= == ~=
ֱʾ СڣڣڣСڣȣ
ЩǷtruefalse
TableFunctionUserdata͵ݣֻ ==  ~=áȱʾõͬһݡ磺
a={1,2}
b=a
print(a==b, a~=b)  -- true, false
a={1,2}
b={1,2}
print(a==b, a~=b)  -- false, true

߼
and, or, not
Уand  or Cر
ȼסLuaУֻfalsenilżΪfalseκݶΪtrue0Ҳtrue
and  ortruefalseǺء
a and baΪfalse򷵻a򷵻b
a or b a Ϊtrue򷵻a򷵻b

ټӣ
 print(4 and 5) --> 5
 print(nil and 13) --> nil
 print(false and 13) --> false
 print(4 or 5) --> 4
 print(false or 5) --> 5

LuaǺõԣҲǱȽ˻䢵ԡ
ǿģCе䣺x = a? b : cLuaУдɣx = a and b or c
õǣ x = x or v൱ڣif not x then x = v end 

ȼӸߵ˳£
^
not - һԪ㣩
 * /
 + -
 ..ַӣ
 < > <= >= ~= ==
 and
 or

III.  ؼ
ؼǲΪġLuaĹؼֲ࣬¼
and break do else elseif
end false for function if
in local nil not or
repeat return then true untilwhile

IV.  
ôȷһʲô͵أҿtype()顣Luaֵ֧¼֣

Nil  ֵûʹùınilnilֵ͡
Boolean  ֵ
Number  ֵLuaֵ൱CԵdouble
String  ַԸĻַǿ԰'\0'ַ
Table  ϵͣ͹ܱȽǿں˵
Function  ͣҪɣҲһͣҲ˵еĺһ
Userdata  ţרLua򽻵ġͨCC++дģ£UserdataͣõStructָ롣
Thread  ߳ͣLuaû̡߳LuaпԽһֳɼСȤĻȥLuaĵ

V.  Ķ
еԣҪõLuaУʲôطʹñҪеЩȫֱǣǰ"local"
һҪرע⣬Ϊںʹþֲȴlocal˵
ڱ֣ǴСдصġҲ˵Aaͬı
һķǸֵ""ֵ
һ弸ֳ͵ıɡ
A.  Nil
ǰ˵ģûʹùıֵNilʱҲҪһʱǿֱӸnilֵ磺
var1=nil  -- ע nil һҪСд

B.  Boolean
ֵͨڽжϵʱ򡣲ֵ֣true  falseLuaУֻfalsenilűΪfalseκ͵ֵtrue0մȵȣtrueҪCԵϰ󵼣0LuaеĵȷȷtrueҲֱӸһBoolean͵ֵ磺
varboolean = true

C.  Number
LuaУû͵ģҲҪһ£ֻҪֵǺܴ󣨱粻100,000,000,000,000ǲġںܶCPUϣʵ㲢
ʵıʾͬCƣ磺
4 0.4 4.57e-3 0.3e12 5e+20

D.  String
ַһַǳõĸ߼͡LuaУԷǳĶַܳܳ
ַLuaмַʾͨõķ˫Żһַģ磺
"This is a string."
Cͬģ֧һЩתַб£
\a  bell
\b  back space
\f  form feed
\n  newline
\r  carriage return
\t  horizontal tab
\v  vertical tab
\\  backslash
\"  double quote
\'  single quote
\[  left square bracket
\]  right square bracket

ַֻдһУˣɱҪõתַתַĴʵǲҹά磺
"one line\nnext line\n\"in quotes\", 'in quotes'"
һѵ"\"˿ܵθڡͬУôLuaУһֱʾ"[[""]]"еַ磺
page = [[
<HTML>
<HEAD>
<TITLE>An HTML Page</TITLE>
</HEAD>
<BODY>
<A HREF="http://www.lua.org">Lua</A>
[[a text between double brackets]]
</BODY>
</HTML>
]]

ֵעǣַУеʹõ"[[""]]"Ȼ"\[""\]"塣ȻǼٻᷢġ

E.  Table
ϵͣһǿ͡ǿ԰Ϳһ顣ֻCԵ飬ֻLuaУnilͬCУֻһͣLuaУҲ͵ֵݣnil
TableĶܼ򵥣Ҫ"{""}"һϵԪصġ磺

T1 = {}  -- һձ
T1[1]=10  -- ȻǾͿCһʹˡ
T1["John"]={Age=27, Gender="Male"}
һ൱ڣ
T1["John"]={}  -- ȶһǵδınil
T1["John"]["Age"]=27
T1["John"]["Gender"]="Male"
ַʱǿԼдɣ
T1.John={}
T1.John.Age=27
T1.John.Gender="Male"

T1.John{Age=27, Gender="Male"}
һǿԡ

ڶʱǿ԰еһд"{""}"֮䣬Ƿǳ㣬Һܺÿ磬ǰT1Ķ壬ǿôд

T1=
{
10,  -- ൱ [1] = 10
[100] = 40,
John=  -- ԭ⣬㻹дɣ["John"] =
{
Age=27,   -- ԭ⣬㻹дɣ["Age"] =27
Gender=Male   -- ԭ⣬㻹дɣ["Gender"] =Male
},
20  -- ൱ [2] = 20
}

ƯдʱҪע㣺
һԪ֮䣬ö""
ڶֵҪ"[""]"ַȥźţ
дͻᱻΪ֣˳Զ1ࣻ

͵Ĺ˵ķ㣬ڳļǵģûɣiniļҪƯǿĶࡣ

F.  Function
LuaУĶҲܼ򵥡͵Ķ£
function add(a,b)  -- add Ǻ֣abǲ
 return a+b  -- return غн
end

ע⣬returnһҪдend֮ǰҪмһreturnôдɣdo return end
ǵǰ˵ҲǱĺ壬ʵ൱ڣ
add = function (a,b) return a+b end
¸addֵʱͲٱʾˡԸaddݣnil addFunctionǲǺCԵĺָأ

CһLuaĺԽܿɱͬ""ģ磺
function sum (a,b,)
ȡáĲںзargֲͣõ
 sum(1,2,3,4)
ںУa = 1, b = 2, arg = {3, 4}
ɹǣͬʱض磺
function s()
return 1,2,3,4
end
a,b,c,d = s()  -- ʱa = 1, b = 2, c = 3, d = 4

ǰ˵Ϳӵ͵ֵˣһǿǣӵкıŶǡӦ˵ǶɡLuaʹˡţҾ£

t =
{
 Age = 27
 add = function(self, n) self.Age = self.Age+n end
}
print(t.Age)  -- 27
t.add(t, 10)
print(t.Age)  -- 37

t.add(t,10) һʵе԰ɣûϵLuaУԼдɣ
t:add(10)    -- ൱ t.add(t,10)

G.  Userdata  Thread
͵Ļ⣬˱ĵݣͲϸ˵ˡ

VI.  
ô𣿵ȻǣҪLuaʵˡƪСֻǰ˽Lua﷨б̻ŻܿLuaˡ
CһLuaṩ൱ı׼ǿԵĹܡʹЩ׼ԺܷĲͣйⷽϢԲοProgramming in Lua һ飬ֱӹۿӰ棬ַΪhttp://www.lua.org/pil/index.html
ȻLuaǿĹ޼ĺˣһƪ£һߴңĳʹLuaΪűʹĳLuaűн 