Lua支持的常規語句包括:賦值、控制結構和過程調用。另外還支持諸如:多重賦值和局部變量聲明等不太常見的語句。函數
賦值測試
賦值的基本含義是修改一個變量或一個table中字段的值;Lua容許「多重賦值」,也就是一會兒將多個值賦予多個變量。每一個值或每一個變量之間以逗號分隔。lua
a , b = 10, 2*x 賦值後,變量a爲10,b爲2*x
在多重賦值中,Lua先對等號右邊的全部元素求值,而後才執行賦值。Lua老是會將等號右邊值的個數調整到與左邊變量的個數相一致。規則是:若值的個數少於變量的個數,那麼多餘的變量會被賦予nil;若值的個數更多的話,那麼多餘的值會被「靜悄悄地」丟棄。spa
局部變量和塊命令行
相對於全局變量,Lua還提供了局部變量;經過local語句來建立局部變量。code
j = 10 -- 全局變量 local i = 1 --局部變量
與全局變量不一樣的是,局部變量的做用域僅限於聲明他們的那個塊。一個塊是一個控制結構的執行體或或者是一個函數的執行體或者是一個程序塊。作用域
x = 10 local i = 1 --程序塊中的局部變量 while i <= x do local x = i*2 --while循環體中的局部變量 print(x) -->2,4,6,8... end if i > 20 then local x --->then中的局部變量 x = 20 print(x + 2) -->若是測試成功會打印22 else print(x) --->10(全局變量) [這裏若是else語句裏有個local x,則此時print(x)打印的就是else語句裏定義的x,若是還有個變量x = 555,則此時else裏和整個if語句外面的print打印的都是555 總結:若是一個塊裏有個local變量,則會優先使用這個local變量,若是沒有,就從外面的全局變量裏查找,若是定義多個同名的全局變量,print會使用離他最近的一個變量值。] end print(x) --->10(全局變量)
爲了明確Lua中做用域的概念,能夠顯示地界定一個塊,只須要將這些內容放入一對關鍵字do-end中便可。在命令行中每當輸入do時,Lua就不會單獨地執行後面的每行內容,而是直至遇到一個相應的end時,纔會執行整個塊的內容。table
儘量地使用局部變量,能夠避免將一些無用的名稱引入全局變量,避免搞亂整個全局環境。此外,訪問局部變量比訪問全局變量更快。最後一個局部變量一般會隨着其做用域的結束而消失,這樣便使垃圾收集器能夠釋放其值。class
Lua將局部變量的聲明當作語句來處理,所以能夠在任何容許書寫語句的地方書寫局部變量的聲明。所聲明的局部變量的做用域從聲明語句開始,直至所在塊的結尾。聲明語句中還能夠包含初始化賦值。若是一條聲明語句沒有初始化賦值,那麼它聲明的全部變量都會初始化爲nil。變量