1. 程式人生 > >lua_local變數在new時不會被清空

lua_local變數在new時不會被清空

前言

我的執行環境 Lua5.3

按照我們以往的Java或C#程式設計經驗,如果一個class被new,那麼這個class中所有成員變數的值都是默值或是建構函式中賦的值,但在Lua中的local變數卻並不會被清空。

示例

這個例子中,我們定義了一個local 的 instanceClassA中,通過new() 兩次 ClassA,通過輸出觀察到建構函式(ctor)呼叫了兩次,但第二次new時,local 變數還是存在上次的值。

--- Lua中local變數的作用域,並不侷限於當前class
--- Created by zhaoqingqing. [email protected]
--- DateTime: 2018/11/26 --- --- require("Common/class") local ClassA = class("ClassA") local flag = nil function ClassA:ctor() print("ClassA:ctor") self:TestLocal() end function ClassA:TestLocal() if not flag then flag = "ClassA" print("TestLocal") end end ClassA.new() ClassA.new()

輸出結果:

lua.exe E:/Code/blog_samplecode/lua_scripts/oop/LocalRefContext.lua
ClassA:ctor
TestLocal
ClassA:ctor