1. ホーム
  2. スクリプト・コラム
  3. ルア

Luaの基本的なイテレータの使用例

2022-01-09 04:36:37

公式のドキュメントには、次のように書かれています。

イテレータは、標準テンプレートライブラリのコンテナ内の一部またはすべての要素に対して反復処理を行うために使用できるオブジェクトであり、各イテレータオブジェクトはコンテナ内の定義されたアドレスを表します。

Luaにおけるイテレータとは、コレクションの各要素に対して反復処理を行うポインタ型をサポートする構造体のことです。

主なイテレータの種類は、汎用イテレータ、ステートレスイテレータ、マルチステートイテレータです。

以下はその例です。

ipairs.lua

name = {"YYX","HJZ"};
-- the following is called a generic for iterator
-- where key denotes the index value, starting from 1
--value denotes the element in the array
--ipairs denotes the iterative function
for key,value in ipairs(name) do
 print(key,value);
end
--implement a self-addition algorithm stateless iterative function
function NumAdd(count,var)
 -- Define a local variable _count and initialize it to 0
 local _count = 0 ;
 -- The parameter count indicates the number of iterations needed for the function
 --In fact, the idea here is a bit like the C recursion
 --Implementing recursion requires a conditional exit, with a beginning and an end
 if(var < count)
 then
     var = var + 1 ;
  return var , var + _count ;
 end
end 
--output the value of the iteration function, i means the number of iterations, n means the value after iteration
for i , n in NumAdd,5,0
do 
  print(i,n);
end
array = {1,2,3,4,5,6,7,8,9,10};
function array_put(length , var)
 --get the length of the array
 length = #array ;
 --If the value to be traversed is less than the length of the array, then traverse it
 if(var < length)
 then 
   var = var + 1 ;
   return var , array[var] ;
 end 
end
for i , n in array_put,10,0
do
 print(i,n);
end 

ランの説明

lua ipairs.lua

結果を実行します。

1 YYX
2 HJZ
1 1
2 2
3 3
4 4
5 5
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 10

概要

以上が本記事の内容の全てです、皆様の勉強やお仕事に本記事の内容が一定の参考学習価値を持つことを願っています、BinaryDevelopをよろしくお願いします。もっと詳しく知りたい方は、以下のリンク先をご確認ください。