麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > 綜合 > 正文

Lua基礎教程之表(Table)學習筆記

2024-07-21 23:04:10
字體:
來源:轉載
供稿:網友

 

復制代碼 代碼如下:

    a = { }
    b = { x = 1, ["hello, "] = "world!" }
    a.astring = "ni, hao!"
    a[1] = 100
    a["a table"] = b
    function foo()
    end
    function bar()
    end
    a[foo] = bar
    --分別窮舉表a和b
    for k, v in pairs(a) do
        print(k, "=>", v)
    end
    print("----------------------------")
    for k, v in pairs(b) do
        print(k, "=>", v)
    end

 

 

復制代碼 代碼如下:

--輸出結果
1 => 100
a table => table: 003FB3A0
function: 003FCBB0 => function: 003FCBD0
astring => ni, hao!
----------------------------
hello,  => world!
x => 1

 

定義表(Table)的方式:a = {}, b = {…}

訪問表的成員:通過“.”或者“[]”運算符來訪問表的成員。注意:表達式a.b等價于a[“b”],但不等價于a[b]

 

復制代碼 代碼如下:

    local b = {"h", 20} --《=》 {[1]="h", [2]=20}  《=》local b={};b[1]="h";b[2]=20
    local d = {x=0, y=0}  --《=》local d = {}; d.x=0; d.y=0 《=》local d = {}; d["x"]=0; d["y"]=0

 

表項的鍵和值:任何類型的變量,除了nil,都可以做為表項的鍵。從簡單的數值、字符串到復雜的函數、表等等都可以;同樣,任何類型的變量,除了nil,都可以作為表項的值。給一個表項的值賦nil意味著從表中刪除這一項,比如令a.b= nil,則把表a中鍵為“b”的項刪除。如果訪問一個不存在的表項,其值也是nil,比如有c = a.b,但表a中沒有鍵為“b”的項,則c等于nil。

一種簡單的對象實現方式

 

復制代碼 代碼如下:

function CreateStudent(ID,Name)
   local Obj={id=ID,name=Name};
    function Obj:GetID()
    return self.id;
 end
 function Obj.GetName(self)
    return self.name;
 end
 function Obj:SetID(ID)
    self.id=ID;
 end
 Obj.SetName=function(self,Name)
 self.name=Name
 end
 return Obj;
end

 

s1=CreateStudent(1,"andy");
print("s1'id=",s1:GetID(),"s1'name=",s1.GetName(s1))

s1:SetID(2);
s1.SetName(s1,"lili");
print("s1'id=",s1:GetID(),"s1'name=",s1:GetName())

--輸出結果
--s1'id= 1 s1'name= andy
--s1'id= 2 s1'name= lili

 

對象工廠模式:如上面代碼的create函數

用表來表示對象:把對象的數據和方法都放在一張表內,雖然沒有隱藏私有成員,但對于簡單腳本來說完全可以接受。

成員方法的定義:function obj:method(a1, a2, ...) … end <==>function obj.method(self, a1, a2, ...) … end <==>obj.method = function (self, a1, a2, ...) … end
成員方法的調用:obj:method(a1, a2, …) <==>obj.method(obj, a1, a2, ...)

簡單繼承

 

復制代碼 代碼如下:

function CreateStudent(ID,Name)
   local Obj={id=ID,name=Name};
    function Obj:GetID()
    return self.id;
 end
 function Obj.GetName(self)
    return self.name;
 end
 function Obj:SetID(ID)
    self.id=ID;
 end
 Obj.SetName=function(self,Name)
 self.name=Name
 end
 return Obj;
end

 

function CreateClassStudent(ID,Name,Class)
   local obj=CreateStudent(ID,Name);
    obj.class=4;
   function obj:GetClass()
      return self.class;
   end
   function obj.SetClass(self,class)
      self.class=class;
   end
   return obj;
end

s2=CreateClassStudent(1,"andy",5);
print("s2'class=",s2.GetClass(s2))

 

優點:簡單、直觀 缺點:傳統、不夠動態

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 九九精品在线观看视频 | av在线免费看片 | 精品久久一区二区 | 国产免费观看电影网站 | 亚洲成人欧美在线 | 国产美女视频一区二区三区 | 精品国产99久久久久久宅男i | 成人在线观看一区二区 | 免费一级在线观看 | 日韩高清影视 | 又黄又爽免费无遮挡在线观看 | 在线成人免费网站 | 久久久久久久久日本理论电影 | 精品av在线播放 | 91短视频版高清在线观看www | 最新一区二区三区 | 成人不卡免费视频 | 欧美一级片在线 | 精品二区在线观看 | 国产精品v片在线观看不卡 成人一区二区三区在线 | 亚洲精品a级 | 精品一区二区亚洲 | 青青草华人在线 | 久久精品视频免费观看 | 免费国产在线视频 | 香蕉视频18| 黄色片网站在线免费观看 | 欧美在线观看黄色 | 免费a级毛片大学生免费观看 | 久久精品日产高清版的功能介绍 | 国产91免费看| 国产色91| 亚洲一区在线免费视频 | 99精品视频在线免费观看 | 久久久入口 | 欧美一极视频 | 国产精品区一区二区三区 | 黄色免费入口 | 国产精品视频二区不卡 | www国产免费 | 日本xxxx视频 |