lua_local變量在new時不會被清空

前言

個人運行環境 Lua5.3編程

按照咱們以往的Java或C#編程經驗,若是一個class被new,那麼這個class中全部成員變量的值都是默值或是構造函數中賦的值,但在Lua中的local變量卻並不會被清空。函數

示例

這個例子中,咱們定義了一個local 的 instanceClassA中,經過new() 兩次 ClassA,經過輸出觀察到構造函數(ctor)調用了兩次,但第二次new時,local 變量仍是存在上次的值。oop

--- Lua中local變量的做用域,並不侷限於當前class
--- Created by zhaoqingqing. 569032731@qq.com
--- 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()

輸出結果:ui

lua.exe E:/Code/blog_samplecode/lua_scripts/oop/LocalRefContext.lua
ClassA:ctor
TestLocal
ClassA:ctor
相關文章
相關標籤/搜索