3

私はtable.sort一般的にingとテーブルを練習しようとしています。t{}以下の表をtable.sort、それぞれの名前の数値で取っています。元のテーブルt{}がソートされたら、それを印刷するのに問題がありますa{}(それを解決するためだけに印刷しようとしてa{}います)。どこにprint (、どのコードを配置しますか? )このようなコードに?

初心者、初歩的な質問で申し訳ありません。しかし、どこにprint()行を挿入するfunctionか、またはコードをチェックしてコードを確認するかを理解するのに問題があります。などで変化returnしてprintいますが、この部分はまだ把握できていません。

助けてくれてありがとう!

 t = {
    Steve = 4,
    Derek = 1,
    Mike = 3,
    Steph = 8,
    Mary = 15,
    Danny = 10
    }

 function pairsByKeys (t,f) 
    local a = {}

    for x in pairs (t) do
        a[#a + 1] = x
    end

    table.sort(a,f)
    local i = 0
    return function ()
    i = i + 1
    return a[i], t[a[i]]
    end
end

local timer = os.time()
repeat until os.time() > timer + 10
4

1 に答える 1

2

pairsByKeysはイテレータ関数として実装されているため (標準ライブラリと同様pairs、または標準ライブラリによって提供されます)、次のような一般的なステートメントipairsで使用できます(デフォルトの比較関数を使用):for

for k,v in pairsByKeys(t) do
    print(k, v)
end

出力:

Danny   10
Derek   1
Mary    15
Mike    3
Steph   8
Steve   4
于 2013-10-03T14:16:36.693 に答える