luaにおけるpairsとipairsの違い
12078 ワード
標準ライブラリには、反復ファイルの各行(io.lines)、反復table要素の(pairs)、反復配列要素の(ipairs)、反復文字列内の単語の
(string.gmatch)など.LUAマニュアルではpairs、ipairsについて以下のように説明しています.
Returns three values: an iterator function, the table
will iterate over the pairs (
Returns three values: the next function, the table
will iterate over all key–value pairs of table
See function next for the caveats of modifying the table during its traversal.
これでipairsとpairsの違いがわかります.
pairsは、テーブル内のすべてのkeyを遍歴することができ、反復器自体および遍歴テーブル自体に加えてnilを返すことができる.
しかしipairsはnilを返すことができず、数字0を返すしかなく、nilに遭遇すると終了する.テーブルに表示される最初の整数ではないkeyにのみ遍歴できます
http://blog.csdn.net/witch_soya/article/details/7556595から
(string.gmatch)など.LUAマニュアルでは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を返すことができず、数字0を返すしかなく、nilに遭遇すると終了する.テーブルに表示される最初の整数ではないkeyにのみ遍歴できます
1 !
2
3 eg:
4 local tabFiles = {
5 [3] = "test2",
6 [6] = "test3",
7 [4] = "test1"
8 }
9
10 for k, v in ipairs(tabFiles) do
11 print(k, v)
12 end
13
14
15 ?
16
17 , ipairs(tabFiles) , key=1 value nil, 。
18
19 >lua -e "io.stdout:setvbuf 'no'" "Test.lua"
20 >Exit code: 0
21
22 ,
23 for k, v in pairs(tabFiles) do
24 print(k, v)
25 end
26 :
27 >lua -e "io.stdout:setvbuf 'no'" "Test.lua"
28 3 test2
29 6 test3
30 4 test1
31 >Exit code: 0
32 ,
33 local tabFiles = {
34 [1] = "test1",
35 [6] = "test2",
36 [4] = "test3"
37 }
38 for k, v in ipairs(tabFiles) do
39 print(k, v)
40 end
41 key=1 value test1
42 >lua -e "io.stdout:setvbuf 'no'" "Test.lua"
43 1 test1
44 >Exit code: 0
45 --[ 1.]--
46 local tt =
47 {
48 [1] = "test3",
49 [4] = "test4",
50 [5] = "test5"
51 }
52
53 for i,v in pairs(tt) do -- "test4" "test3" "test5"
54 print( tt[i] )
55 end
56
57 for i,v in ipairs(tt) do -- "test3" k=2
58 print( tt[i] )
59 end
60
61
62
63
64
65 -- [[ 2.]] --
66 tbl = {"alpha", "beta", [3] = "uno", ["two"] = "dos"}
67
68 for i,v in ipairs(tbl) do --
69 print( tbl[i] )
70 end
71
72 for i,v in pairs(tbl) do --
73 print( tbl[i] )
74 end
http://blog.csdn.net/witch_soya/article/details/7556595から