• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆 - 132  文章 - 51  trackbacks - 0
            <2025年8月>
            272829303112
            3456789
            10111213141516
            17181920212223
            24252627282930
            31123456

            常用鏈接

            留言簿(7)

            隨筆分類

            隨筆檔案

            文章分類

            文章檔案

            cocos2d-x

            OGRE

            OPenGL

            搜索

            •  

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            標(biāo)準(zhǔn)庫(kù)提供了集中迭代器,包括迭代文件每行的(io.lines),迭代table元素的(pairs),迭代數(shù)組元素的(ipairs),迭代字符串中單詞的 

            (string.gmatch)等等。LUA手冊(cè)中對(duì)與pairs,ipairs解釋如下:

            ipairs (t)

            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 (t)

            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以及pairs 的不同。

             

            pairs可以遍歷表中所有的key,并且除了迭代器本身以及遍歷表本身還可以返回nil;

             

            但是ipairs則不能返回nil,只能返回?cái)?shù)字0,如果遇到nil則退出。它只能遍歷到表中出現(xiàn)的第一個(gè)不是整數(shù)的key

             


            下面舉個(gè)例子吧!

             

             eg:

            local tabFiles = {

            [3] = "test2",

            [6] = "test3",

            [4] = "test1"

            }

             

            for k, v in ipairs(tabFiles) do

            print(k, v)

            end

             

             

            猜測(cè)它的輸出結(jié)果是什么呢?

             

            根據(jù)剛才的分析,它在 ipairs(tabFiles) 遍歷中,當(dāng)key=1時(shí)候value就是nil,所以直接跳出循環(huán)不輸出任何值。

             

            >lua -e "io.stdout:setvbuf 'no'" "Test.lua"

            >Exit code: 0

             

            那么,如果是

            for k, v in pairs(tabFiles) do

            print(k, v)

            end

            則會(huì)輸出所有 :
            >lua -e "io.stdout:setvbuf 'no'" "Test.lua" 
            3 test2
            6 test3
            4 test1
            >Exit code: 0
            現(xiàn)在改變一下表內(nèi)容,
            local tabFiles = {
            [1] = "test1",
            [6] = "test2",
            [4] = "test3"
            }
            for k, v in ipairs(tabFiles) do
            print(k, v)
            end
            現(xiàn)在的輸出結(jié)果顯而易見(jiàn)就是key=1時(shí)的value值test1

             >lua -e "io.stdout:setvbuf 'no'" "Test.lua" 

            1 test1

            >Exit code: 0 

            --[示例1.]--
            local tt 
            =
            {
                [
            1= "test3",
                [
            4= "test4",
                [
            5= "test5"
            }


            for i,v in pairs(tt) do        -- 輸出 "test4" "test3" "test5"
                print( tt[i] )
            end

            for i,v in ipairs(tt) do    -- 輸出 "test3" k=2時(shí)斷開(kāi)
                print( tt[i] )
            end





            -- [[示例2.]] --
            tbl 
            = {"alpha""beta", [3= "uno", ["two"= "dos"}

            for i,v in ipairs(tbl) do    --輸出前三個(gè)
                print( tbl[i] )
            end

            for i,v in pairs(tbl) do    --全部輸出
                print( tbl[i] )
            end




            posted on 2011-12-16 08:43 風(fēng)輕云淡 閱讀(20928) 評(píng)論(3)  編輯 收藏 引用 所屬分類: LUA

            FeedBack:
            # re: lua 中pairs 和 ipairs區(qū)別[未登錄](méi) 2014-03-28 16:31 kyle
            英語(yǔ)不好就別誤人子弟了

            ---------------------------Yours-----------
            pairs可以遍歷表中所有的key,并且除了迭代器本身以及遍歷表本身還可以返回nil;
            但是ipairs則不能返回nil,只能返回?cái)?shù)字0,如果遇到nil則退出。它只能遍歷到表中出現(xiàn)的第一個(gè)不是整數(shù)的key

            --------------------------Mine------------
            pairs遍歷表中全部key,value
            ipairs從下標(biāo)為1開(kāi)始遍歷,然后下標(biāo)累加1,如果某個(gè)下標(biāo)元素不存在就終止遍歷。這就導(dǎo)致如果下標(biāo)不連續(xù)或者不是從1開(kāi)始的表就會(huì)中斷或者遍歷不到元素。  回復(fù)  更多評(píng)論
              
            # re: lua 中pairs 和 ipairs區(qū)別 2015-08-01 13:15 damnimgood
            感謝分享 獲益了  回復(fù)  更多評(píng)論
              
            # re: lua 中pairs 和 ipairs區(qū)別 2015-09-04 22:32 Rming
            @kyle

            謝謝分享  回復(fù)  更多評(píng)論
              
            久久综合给合综合久久| 久久无码人妻精品一区二区三区 | 人妻丰满?V无码久久不卡| 亚洲国产另类久久久精品黑人| 久久精品人妻一区二区三区| 欧美亚洲国产精品久久蜜芽| 国产精品岛国久久久久| 久久精品aⅴ无码中文字字幕重口| 久久精品极品盛宴观看| 久久婷婷五月综合97色直播| 国产成人99久久亚洲综合精品| 亚洲成人精品久久| 久久国产热这里只有精品| 亚洲伊人久久综合影院| 亚洲色欲久久久综合网东京热| 久久亚洲精品成人无码网站| 亚洲欧美成人综合久久久| 无码久久精品国产亚洲Av影片 | 老司机午夜网站国内精品久久久久久久久| 久久精品国产91久久综合麻豆自制 | segui久久国产精品| 久久天天躁狠狠躁夜夜2020| 久久强奷乱码老熟女网站| 久久只这里是精品66| 久久九九精品99国产精品| 亚洲狠狠久久综合一区77777| 久久久久国色AV免费看图片| 久久久一本精品99久久精品88| 久久久噜噜噜www成人网| 品成人欧美大片久久国产欧美...| 久久久午夜精品| 久久亚洲精品中文字幕三区| 一本大道久久香蕉成人网| 久久精品国产亚洲AV大全| 精品熟女少妇aⅴ免费久久| 国产毛片欧美毛片久久久| 日韩精品国产自在久久现线拍| 亚洲国产精品综合久久网络 | 亚洲精品无码久久久久sm| 草草久久久无码国产专区| 亚洲AV日韩精品久久久久|