私はそうのようにLuaの中の辞書(文字列型のインデックスが含まれている、すなわちLuaのテーブルを)持っていると言うことができます:私が何をしようとしています何Luaで辞書を繰り返すことができるイテレータを作ることはできますか?
local my_dictionary = {a = 123; b = 321; c = 456; d = 654};
は、テーブルを反復処理することができますイテレータ関数を作成することですたとえそのインデックスが文字列型であっても、しかし、次のインデックスを取得するためにnext()を呼び出そうとするたびに、インデックスはint型の場合にのみインデックスを返します。私が持っていたアイデアは、おそらく(インデックス)を呼び出すことでした:byte(1、-1)とintのタプルを追加し、それをインデックスのようなものとして使用します。それは次に働くでしょう。ここで私がこれまで持っているものは基本的である:
local function each(list)
if #list > 0 then
local function my_itr(lst, ind)
return next(lst, ind);
end
return my_itr, List, 0;
end
return function() end, nil, nil;
end
int型のインデックスを持つテーブルに対してのみ動作(配列表)ので、誰も私を助けることができる場合、私は思っていました。おかげさまで 編集:ここでは、これはあまり曖昧ようにするには、私が達成しようとしています何のコードの例の一部です:
local mytable = {a = 123; b = 321; 3, 2, 1, c = "bca"};
for i,v in each(mytable) do
print(i,v);
end
それが出力すべきか:
>a 123
>b 321
>1 3
>2 2
>3 1
>c bca
出力である必要はありません正確な順序。
あなたの質問は理解するのがむずかしいです。文字列のキーを辞書順に繰り返したいと思うかもしれませんが、それでもなお達成したいものの例、つまりテーブル、コード、目的の出力を投稿できますか? – iehrlich
もちろん、私はそれを編集しました。ありがとう –
上記のように、あなたはintインデックスを返すだけですが、目的の出力は 'pairs()'と同じ動作を示します。どちらですか?ところで、このページはhttps://www.lua.org/pil/7.3.htmlの 'pairs'の実装方法を示しています。 – luther