Lua配列と反復器の概要


配列とは、同じデータ型の要素が一定の順序で配列された集合であり、1次元配列と多次元配列であってもよい.Lua配列のインデックスキー値は整数で表すことができ,配列の大きさは固定されていない.
注意:整数インデックスを使用して配列要素にアクセスできます.インデックスに値がない場合はnilを返します.Luaインデックス値では1を開始しますが、0を指定して開始することもできます.また、負の数を配列インデックス値として使用することもできます.
--           

--        
array = {{1,2},{3,4},{5,6},{7,8}}

for i=1,4 do
    for j=1,2 do
        print(array[i][j])
    end
end


--        
array1 = {}
for i=1,4 do
   array1[i] = {}
      for j=1,2 do
         array1[i][j] = i+j
      end
end

--       
for i=1,4 do
   for j=1,2 do
      print(array1[i][j])
   end
end

--         ,                           ,    ,,,

反復器反復器(iterator)は、標準テンプレートコンテナ内の要素の一部またはすべてを巡回するために使用できるオブジェクトであり、各反復器オブジェクトは、コンテナ内の決定されたアドレスを表すLua内の反復器は、ポインタタイプをサポートする構造であり、集合の各要素を巡回することができる.
array = {"Lua", "C#","js","Boo"}

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

pairsとipairsの違い:pairs:反復配列、テーブル内のすべてのkeyを遍歴してnil ipairsを返すことができます:反復配列、nilを返すことができなくて、nilに出会ったら退出します
例:
local tabFiles = {"Lua", "C#",[3] = "js",["haha"]="Boo"}}  

--   key    ,        
for i,v in ipairs(tabFiles ) do
    print( tabFiles [i] )   
end   

--     
for i,v in pairs(tabFiles ) do     
    print( tabFiles [i] )   
end 

ステータスレス反復器ステータスレス反復器とは、ステータスを保持しない反復器を指すため、ループではステータスレス反復器を使用して閉パケットの作成に追加のコストを費やすことを回避できます.反復のたびに、反復関数は2つの変数(状態定数と制御変数)の値をパラメータとして呼び出し、1つの状態のない反復器はこの2つの値だけを利用して次の要素を取得することができます.この無状態反復器の典型的な簡単な例はipairsであり,配列の各要素を遍歴している.
マルチステートの反復器は、単純な状態定数や制御変数ではなく複数の状態情報を保存する必要がある場合が多く、最も簡単な方法は閉パケットを使用することであり、もう1つの方法は、すべての状態情報をtable内にカプセル化し、tableを反復器の状態定数とすることである.この場合、すべての情報をtable内に格納することができるため、したがって、反復関数には通常、2番目のパラメータは必要ありません.
推奨表示:http://www.runoob.com/lua/lua-strings.html