自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Lua基礎(chǔ):巧說table的幾種構(gòu)造方式

移動(dòng)開發(fā)
之前對(duì)于Lua的研究都是紙上談兵,沒有真正的項(xiàng)目練手,現(xiàn)在公司的項(xiàng)目基本上都是用Lua開發(fā),是時(shí)候補(bǔ)充一下我那蹩腳的Lua知識(shí)了。

[[119187]]

之前對(duì)于Lua的研究都是紙上談兵,沒有真正的項(xiàng)目練手,現(xiàn)在公司的項(xiàng)目基本上都是用Lua開發(fā),是時(shí)候補(bǔ)充一下我那蹩腳的Lua知識(shí)了。

基礎(chǔ)數(shù)據(jù)類型、表達(dá)式、循環(huán)結(jié)構(gòu)什么的我就不說了,這么簡(jiǎn)單的東西說了也要被大家噴。

今天我想說說table的幾種構(gòu)造方式。

0.Lua調(diào)試工具——LuaEditor

首先,如果你是***次接觸Lua,請(qǐng)補(bǔ)充一下Lua的最基本之中的基礎(chǔ)語法(小若:O O?。?,然后下載一個(gè)LuaEditor工具,用來查看Lua執(zhí)行效果,當(dāng)然也可以調(diào)試,本篇內(nèi)容不解釋這個(gè)工具。下載地址:http://www.bego.cc/file/22357242 當(dāng)然,也可以百度一下。

1.什么是table?

table是Lua最復(fù)雜***大的數(shù)據(jù)結(jié)構(gòu),Lua本身并不是面向?qū)ο笳Z言,但是對(duì)面向?qū)ο笾卸颈容^深的程序員,可以借助table”***”地模擬 面向?qū)ο缶幊?。最?jiǎn)單地,我們可以把table理解為數(shù)組,最復(fù)雜的,我們可以把table理解為”世間萬物”,因?yàn)樗梢詣?chuàng)造出很多你想象不到的東西。 一個(gè)字,自由度非常大~!

2.如何創(chuàng)建一個(gè)table?

創(chuàng)建table是一件很復(fù)雜的事情,不知道大家頂不頂?shù)米?,試試看,如下?span>local a = {}

  1. local a = {} 

這樣就創(chuàng)建了一個(gè)table了。

3.如何初始化一個(gè)table

嗷,雖然創(chuàng)建table已經(jīng)很復(fù)雜了,更復(fù)雜的還在后面,怎么初始化table?看看下面的代碼:

  1. local a = {["x"] = 12, ["mutou"] = 99, [3] = "hello"
  2. print(a["x"]); 

在LuaEditor中創(chuàng)建一個(gè)lua文件,輸入以上代碼,保存,然后按F5運(yùn)行,我們將看到輸出窗口輸出了一個(gè)數(shù)字:12。

這挺神奇的,感覺就像是在定義數(shù)組,不是嗎?

table間的元素用逗號(hào)分隔,["x"] = 12代表構(gòu)造一個(gè)table元素,下標(biāo)為”x”,值為12。

嗷~!我就等旁白問這個(gè)問題,旁白你笨蛋啊,我只是說table像數(shù)組,我沒有說它就是數(shù)組,table支持幾乎是所有類型的下標(biāo),包括函數(shù)。

4.有更簡(jiǎn)潔的方式

這種初始化方式看起來太復(fù)雜了,有沒有簡(jiǎn)單點(diǎn)的?看看下面的代碼:

  1. local a = {x = 12, mutou = 99, [3] = "hello"
  2. print(a["x"]); 

運(yùn)行結(jié)果仍然是輸出12,也就是說,對(duì)于字符串下標(biāo),我們可以省略方框和雙引號(hào),但是數(shù)字下標(biāo)不可以,千萬不要搞混了。

但是,a["x"]這種調(diào)用方式也很煩人不是嗎?程序員都很懶的,所以Lua支持一下這種方式的調(diào)用:

  1. local a = {x = 12, mutou = 99, [3] = "hello"
  2. rint(a.x); 

輸出結(jié)果仍然是12,也就是說,對(duì)于字符串下標(biāo),可以直接用a.x的形式調(diào)用,也是省略了方框和雙引號(hào),初始化和調(diào)用方式的規(guī)則一樣,這樣大家就不會(huì)搞混了,記住,是字符串下標(biāo)才這么做。

記住,是字符串下標(biāo)才這么做。

記住,是字符串下標(biāo)才這么做。

5.想要默認(rèn)數(shù)字索引怎么辦?

如果說,大家習(xí)慣了數(shù)組,用數(shù)字下標(biāo),又不想自己一個(gè)個(gè)數(shù)字地定義,比如:

  1. local a = {[1] = 12, [2] = 43, [3] = 45, [4] = 90

沒關(guān)系,Lua又為愛偷懶的程序員提供了一招,如下:

  1. local a = {12434590
  2. print(a[1]); 

看看a[1]輸出的值是不是12?

再一次警告旁白,table類似數(shù)組,但它絕對(duì)不是數(shù)組。

table默認(rèn)的***個(gè)索引下標(biāo)是1,并且很多相關(guān)的函數(shù)也假設(shè)table的***個(gè)索引下標(biāo)為1,所以大家***遵守這個(gè)規(guī)則。

6.更強(qiáng)大的應(yīng)用之table的table

table什么都能放,當(dāng)然也能放table了,如下:

  1. </pre> 
  2. local a = { 
  3.  {x = 1y = 2}, 
  4.  {x = 3y = 10
  5. print(a[1].x); 
  6. <pre> 

我們定義了一個(gè)table,命名為a,table有兩個(gè)元素,分別是兩個(gè)沒有名字的table,根據(jù)第5條所說的規(guī)則,沒有顯示指定下標(biāo),那Lua就會(huì)默認(rèn)給table的元素賦予下標(biāo)(從1開始)。

因此,a的***個(gè)元素就是{x = 1, y = 2},調(diào)用a的***個(gè)元素的方式為:a[1]

由于a[1]又是一個(gè)table,所以,再次調(diào)用table的x下標(biāo)的值:a[1].x

這樣就OK了。

7.更強(qiáng)大的應(yīng)用之函數(shù)下標(biāo)

我們***來試試更好玩的,用一個(gè)函數(shù)當(dāng)table的下標(biāo):

  1. </pre> 
  2. function test() 
  3.  print("Hello Table"); 
  4. end 
  5.   
  6. local a = {[test] = 1} 
  7. print(a[test]); 
  8. <pre> 

定義了一個(gè)函數(shù)test,然后用test作為下標(biāo)定義了table的一個(gè)元素,值為1。

這很奇怪不是嗎?但是有時(shí)候這樣確實(shí)很有用,這里暫時(shí)不解釋。

OK,關(guān)于table的構(gòu)造方式,暫時(shí)說這么多,有點(diǎn)累了,晚安。

本文來自[笨木頭與游戲開發(fā)]

原文地址:http://www.benmutou.com/archives/627

責(zé)任編輯:閆佳明 來源: benmutou
相關(guān)推薦

2010-06-10 13:00:18

RIP協(xié)議

2021-05-07 16:19:36

異步編程Java線程

2009-12-11 09:20:09

Visual Stud

2010-09-25 14:48:55

SQL連接

2021-01-19 11:56:19

Python開發(fā)語言

2010-11-24 09:56:20

mysql拷貝表

2021-08-02 11:13:28

人工智能機(jī)器學(xué)習(xí)技術(shù)

2021-10-07 20:36:45

Redis集群場(chǎng)景

2023-09-07 13:21:00

Linux軟件

2023-02-08 08:43:55

前端繼承原型

2021-06-16 07:02:22

Python方式郵件

2010-08-17 10:22:09

路由器故障

2010-04-13 11:13:02

2019-04-30 10:00:59

CSS居中前端

2024-05-10 07:44:23

C#進(jìn)程程序

2023-10-25 18:18:10

Python腳本代碼

2017-06-13 10:30:20

oracle連接命名

2022-02-16 07:47:48

flask分頁SQLAlchemy

2010-07-30 09:16:24

Flex數(shù)據(jù)綁定

2020-07-14 09:58:01

Python開發(fā)工具
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)