欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Lua中ipair和pair的區(qū)別

 更新時間:2014年09月19日 12:09:54   投稿:junjie  
這篇文章主要介紹了Lua中ipair和pair的區(qū)別,ipair和pair都是用來遍歷table用的,需要的朋友可以參考下

先看看官方手冊的說明吧:

復(fù)制代碼 代碼如下:

pairs (t)If t has a metamethod __pairs, calls it with t as argument and returns the first three results from the call.
Otherwise, returns three values: the next function, the table t, and nil, so that the construction
     for k,v in pairs(t) do body end
will iterate over all key–value pairs of table t.
See function next for the caveats of modifying the table during its traversal.

ipairs (t)If t has a metamethod __ipairs, calls it with t as argument and returns the first three results from the call.
Otherwise, returns three values: an iterator function, the table t, and 0, so that the construction
     for i,v in ipairs(t) do body end
will iterate over the pairs (1,t[1]), (2,t[2]), ..., up to the first integer key absent from the table.

原來,pairs會遍歷table的所有鍵值對。如果你看過耗子叔的Lua簡明教程,你知道table就是鍵值對的數(shù)據(jù)結(jié)構(gòu)。

而ipairs就是固定地從key值1開始,下次key累加1進行遍歷,如果key對應(yīng)的value不存在,就停止遍歷。順便說下,記憶也很簡單,帶i的就是根據(jù)integer key值從1開始遍歷的。

請看個例子。

復(fù)制代碼 代碼如下:

tb = {"oh", [3] = "god", "my", [5] = "hello", [6] = "world"}

for k,v in ipairs(tb) do
     print(k, v)
end


輸出結(jié)果就是:
復(fù)制代碼 代碼如下:

1       oh
2       my
3       god

因為tb不存在tb[4],所以遍歷到此為止了。
復(fù)制代碼 代碼如下:

for k,v in pairs(tb) do
     print(k, v)
end

輸出結(jié)果:
復(fù)制代碼 代碼如下:

1       oh
2       my
3       god
6       world
5       hello

我們都能猜到,將輸出所有的內(nèi)容。然而你發(fā)現(xiàn)輸出的順序跟你tb中的順序不同。
如果我們要按順序輸出怎么辦?辦法之一是:
復(fù)制代碼 代碼如下:

for i = 1, #tb do
     if tb[i] then
          print(tb[i])
     else
end

當然,僅僅是個數(shù)組的話,ipairs也沒問題。

以上(為什么不少回答會以「以上」收尾?,這里就是結(jié)束的意思吧)

相關(guān)文章

  • 使用Lua來擴展C++程序的方法

    使用Lua來擴展C++程序的方法

    這篇文章主要介紹了使用Lua來擴展C++程序的方法,盡管更多的時候人們或許會想用C++來擴展Lua...需要的朋友可以參考下
    2015-07-07
  • Lua進階教程之閉包函數(shù)、元表實例介紹

    Lua進階教程之閉包函數(shù)、元表實例介紹

    這篇文章主要介紹了Lua進階教程之閉包函數(shù)、元表實例介紹,本文詳細講解了Lua的閉包函數(shù)和元表,并同時和C++做了比較,需要的朋友可以參考下
    2014-09-09
  • Lua的迭代器使用中應(yīng)該避免的問題和技巧

    Lua的迭代器使用中應(yīng)該避免的問題和技巧

    這篇文章主要介紹了Lua的迭代器使用中應(yīng)該避免的問題和技巧,本文介紹了避免創(chuàng)建閉合函數(shù)、利用恒定狀態(tài)創(chuàng)造更多變量、不需要for循環(huán)的迭代器等內(nèi)容,需要的朋友可以參考下
    2014-09-09
  • Lua和C++的通信流程分解

    Lua和C++的通信流程分解

    這篇文章主要介紹了Lua和C++的通信流程分解,本文用一張圖講解了Lua和C++之間的通信流程,并對每一步做了分解,需要的朋友可以參考下
    2014-09-09
  • Lua中的變量與賦值方法

    Lua中的變量與賦值方法

    今天小編就為大家分享一篇關(guān)于Lua中的變量與賦值方法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • 理解Lua中的__index和__newindex

    理解Lua中的__index和__newindex

    這篇文章主要介紹了理解Lua中的__index和__newindex,本文給出了三段代碼來講解__index和__newindex,代碼中包含詳細注釋,需要的朋友可以參考下
    2015-04-04
  • phpredis執(zhí)行LUA腳本示例代碼

    phpredis執(zhí)行LUA腳本示例代碼

    這篇文章主要給大家介紹了關(guān)于phpredis執(zhí)行LUA腳本的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-10-10
  • Lua中的迭代器和泛型for學習總結(jié)

    Lua中的迭代器和泛型for學習總結(jié)

    這篇文章主要介紹了Lua中的迭代器和泛型for學習總結(jié),本文講解了迭代器和泛型for的基礎(chǔ)知識、泛型for的語義、無狀態(tài)的迭代器等內(nèi)容,需要的朋友可以參考下
    2014-09-09
  • Lua學習筆記之表和函數(shù)

    Lua學習筆記之表和函數(shù)

    這篇文章主要介紹了Lua學習筆記之表和函數(shù),本文在代碼中使用大量注釋講解了Lua的表和函數(shù)的使用,需要的朋友可以參考下
    2014-09-09
  • Lua的table庫函數(shù)insert、remove、concat、sort詳細介紹

    Lua的table庫函數(shù)insert、remove、concat、sort詳細介紹

    這篇文章主要介紹了Lua的table庫函數(shù)insert、remove、concat、sort詳細介紹,本文分別給出了這幾個函數(shù)的使用實例,需要的朋友可以參考下
    2015-04-04

最新評論