lua編譯器和lua解釋器有什么區(qū)別?
一、lua編譯器和lua解釋器的區(qū)別
lua編譯器把lua腳本編譯成lua虛擬機(jī)的指令。lua解釋器除了有編譯器外還有虛擬機(jī),可以執(zhí)行編譯后的指令。lua是一門(mén)精妙簡(jiǎn)潔,而功能強(qiáng)大的語(yǔ)言,學(xué)習(xí)和掌握它的核心機(jī)制有著重要的意義。
Lua作用域
在Lua語(yǔ)言中聲明的變量默認(rèn)是全局變量,聲明局部變量需要使用local關(guān)鍵字,和其他語(yǔ)言相比這有點(diǎn)特殊。
a = 10
function func()
??? b = 10?? — 仍然是全局變量
??? local c = 20 ?— 局部變量
end
func()
?
print(a + b)??? –> 20,即可以獲取b的值
print(c)??? –> nil
也就是說(shuō)在lua中只要變量沒(méi)定義成local,都可以在全局中獲取它的值。對(duì)于局部變量,也分為函數(shù)作用域和塊作用域。下面例子中a的作用域在fun函數(shù)內(nèi)部,而b的作用域?yàn)閕f語(yǔ)句塊內(nèi)。
function? fun()
??? local a = 1
??? if a == 1
??? then
??????? local b = 1
??????? a = a + 1
??????? print(b)??? — 1
??? end
?
??? print(a)??? — 2
??? print(b)??? — nil,超出塊作用域
end
?
fun()
?
print(a)??? — nil,超出函數(shù)作用域
延伸閱讀:
二、生命周期
生命周期是指變量可以被訪問(wèn)的時(shí)間段,也就是從分配內(nèi)存給它到回收它的內(nèi)存中間的一段時(shí)間。變量的生命周期分為兩種
一種是在棧中分配內(nèi)存的變量,它的生命周期隨著作用域的結(jié)束而結(jié)束,上面案例中的變量都符合這個(gè)規(guī)則。另一種是在堆中分配內(nèi)存的變量,它的生命周期與作用域不一致,比如在堆中申請(qǐng)的內(nèi)存,退出作用域后仍然存在。Lua采用了自動(dòng)內(nèi)存管理,也就是說(shuō)我們不用操心Lua創(chuàng)建的對(duì)象是怎么分配和回收的。
猜你喜歡LIKE
相關(guān)推薦HOT
更多>>
Concurrent Programming, Parallel Programming 的本質(zhì)區(qū)別是什么?
一、Concurrent Programming, Parallel Programming 的本質(zhì)區(qū)別略有交叉,各有不同。Parallel Programming強(qiáng)調(diào)如何在多于1個(gè)CPU等情況下對(duì)系詳情>>
2023-10-13 23:11:46
簡(jiǎn)單工廠模式、工廠方法模式和抽象工廠模式有何區(qū)別?
一、簡(jiǎn)單工廠模式、工廠方法模式和抽象工廠模式的區(qū)別簡(jiǎn)單工廠模式簡(jiǎn)單工模式時(shí)類(lèi)的創(chuàng)建模式,又叫做靜態(tài)工廠方法(static Factory Method)。...詳情>>
2023-10-13 21:42:32
聚類(lèi)和降維有什么區(qū)別與聯(lián)系?
一、聚類(lèi)和降維的區(qū)別與聯(lián)系區(qū)別降維就是復(fù)雜的高維數(shù)據(jù)信息簡(jiǎn)化為更容易閱讀的低維數(shù)據(jù)信息,就像素描把三維的立體圖形繪制在二維的平面上,而...詳情>>
2023-10-13 20:26:02
OC中協(xié)議和多態(tài)有什么區(qū)別?
一、OC中協(xié)議和多態(tài)的區(qū)別在Objective-C中,協(xié)議(Protocol)和多態(tài)(Polymorphism)是兩個(gè)不同的概念,它們的區(qū)別如下:協(xié)議(Protocol):協(xié)...詳情>>
2023-10-13 20:01:13熱門(mén)推薦
大家都在用的Mpp數(shù)據(jù)庫(kù)有哪些?
沸Concurrent Programming, Parallel Programming 的本質(zhì)區(qū)別是什么?
熱lua編譯器和lua解釋器有什么區(qū)別?
熱怎么自定義Visual Studio代碼折疊識(shí)別的區(qū)域?
新4核4線程和4核8線程區(qū)別?
簡(jiǎn)單工廠模式、工廠方法模式和抽象工廠模式有何區(qū)別?
Spark 和 Hadoop 有什么區(qū)別?
cs和bs區(qū)別?
axios和ajax區(qū)別?
ar模型和ma模型的區(qū)別?
聚類(lèi)和降維有什么區(qū)別與聯(lián)系?
DOF和HP有什么區(qū)別?
OC中協(xié)議和多態(tài)有什么區(qū)別?
SAS 9.0中,class指令跟by指令有哪些區(qū)別?
技術(shù)干貨







快速通道 更多>>
-
課程介紹
點(diǎn)擊獲取大綱 -
就業(yè)前景
查看就業(yè)薪資 -
學(xué)習(xí)費(fèi)用
了解課程價(jià)格 -
優(yōu)惠活動(dòng)
領(lǐng)取優(yōu)惠券 -
學(xué)習(xí)資源
領(lǐng)3000G教程 -
師資團(tuán)隊(duì)
了解師資團(tuán)隊(duì) -
實(shí)戰(zhàn)項(xiàng)目
獲取項(xiàng)目源碼 -
開(kāi)班地區(qū)
查看來(lái)校路線