鍍金池/ 教程/ Java/ 變量
數(shù)據(jù)庫(kù)訪問(wèn)
循環(huán)
數(shù)組
錯(cuò)誤處理
面向?qū)ο?/span>
調(diào)試
游戲開(kāi)發(fā)
文件 I/O
變量
迭代器
Web 編程
模塊
函數(shù)
元表
協(xié)程
垃圾回收機(jī)制
標(biāo)準(zhǔn)庫(kù)
決策
數(shù)據(jù)類型
運(yùn)行環(huán)境
操作符
字符串
基本語(yǔ)法
概述

變量

變量就是給一塊內(nèi)存區(qū)域賦予的一個(gè)名字。變量使得在程序中就可以修改或讀取相應(yīng)的內(nèi)存區(qū)域中的內(nèi)容。它可以代表各種不同類型的值,包括函數(shù)與表。

變量的名字由字母、數(shù)字與下劃線組成。它必須是字母或下劃線開(kāi)頭。由于 Lua 是字母大小寫(xiě)敏感的,所以大寫(xiě)字母與小寫(xiě)字母是不一樣的。Lua 中有八種基本值類型:

在 Lua 語(yǔ)言中,雖然我們沒(méi)有變量數(shù)據(jù)類型,但是依據(jù)變量的作用域我們可以將變量分為三類:

  • 全局變量:除非顯示的聲明一個(gè)局部變量,否則所有的變量都被默認(rèn)當(dāng)作全局變量。
  • 局部變量:如果我們將一個(gè)變量定義為局部變量,那么這么變量的作用域就被限制在函數(shù)內(nèi)。
  • 表字段:這種特殊的變量可以是除了 nil 以外的所有類型,包括函數(shù)。

Lua 變量定義

一個(gè)變量定義就意味著告訴解釋器在什么地方創(chuàng)建多大的一塊存儲(chǔ)空間。一個(gè)變量定義包括一個(gè)可選的類型( type )以及該類型的一個(gè)或多個(gè)變量名的列表,如下所示:

type variable_list;

其中,type 是可以選擇指定為 local 或者不指定使用默認(rèn)值 global,variable_list 是包含一個(gè)或多個(gè)由逗號(hào)分隔的標(biāo)識(shí)符名字。下面是合法變量定義的示例:

local    i, j
local    i
local    a,c

local i,j 聲明定義了兩個(gè)變量 i 與 j;它命令解釋器創(chuàng)建兩個(gè)名稱分別為 i,j 的變量,并且將其作用域限制在局部。

在聲明變量的時(shí)候可以同時(shí)初始化變量(為變量賦初值)。在變量名后跟上等號(hào)和一個(gè)常量表達(dá)式就可以初始化變量。如下所示:

type variable_list = value_list;

一些例子如下:

local d , f = 5 ,10 --聲明局部變量 d,f。 
d , f = 5, 10;      --聲明全局變量 d,f。 
d, f = 10           --[[聲明全局變量 d,f,其中 f 的值是 nil--]]

如果只是定義沒(méi)有初始化,則靜態(tài)存儲(chǔ)變量被隱式初始化為 nil。

Lua 變量聲明

正如在上面例子看到的那樣,為多個(gè)變量賦值就是在變量列表后跟上值列表。例子 local d,f = 5,10 中,變量列表是 d,f,值列表是 5,10。

Lua 賦值時(shí)會(huì)將第一個(gè)值賦給第一個(gè)變量,第二個(gè)值賦給第二個(gè)變量,依次類推。所以,d 的值是 5,f 的值是 10。

示例

下面的示例中,變量被聲明在頂部,但是它們?cè)谥骱瘮?shù)中定義和初始化:

-- 變量定義:
local a, b
-- 初始化
a = 10
b = 30
print("value of a:", a)
print("value of b:", b)
-- 交換變量的值
b, a = a, b
print("value of a:", a)
print("value of b:", b)
f = 70.0/3.0
print("value of f", f)

上面的代碼被編譯生成和執(zhí)行后,會(huì)產(chǎn)生如下的結(jié)果:

value of a: 10
value of b: 30
value of a: 30
value of b: 10
value of f  23.333333333333

Lua 中的左值與右值

Lua 中有兩種表達(dá)式:

  • 左值:引用內(nèi)存位置的表達(dá)式被稱之為左值表達(dá)式。左值表達(dá)式既可以出現(xiàn)在賦值符號(hào)的左邊也可以出現(xiàn)在賦值符號(hào)的右邊。
  • 右值:術(shù)語(yǔ)“右值”指存在內(nèi)存某個(gè)位置的數(shù)據(jù)值。我們不能為右值表達(dá)式賦值,也就是說(shuō)右值表達(dá)式只可能出現(xiàn)在賦值符號(hào)的右邊,而不可能出現(xiàn)在賦值符號(hào)的左邊。

變量屬于左值表達(dá)式,所以它可以現(xiàn)在賦值符號(hào)的左邊。數(shù)值常量屬于右值表達(dá)式,它不能被賦值也不能出現(xiàn)在賦值符號(hào)的左邊。下面是合法的語(yǔ)句:

g = 20

但是,下面的語(yǔ)句是非法的,它會(huì)產(chǎn)生生成時(shí)錯(cuò)誤:

10 = 20 

在 Lua 語(yǔ)言中,除了上面講的這種賦值,還允許在一個(gè)賦值語(yǔ)句中存在多個(gè)左值表達(dá)式與多個(gè)右值表達(dá)式。如下所示:

g,l = 20,30

在這個(gè)語(yǔ)句中,g 被賦值為 20,l 被賦值為 30。