0

JArrayNLua でa を繰り返し処理しようとしていますが、どうにかできません。JArray はユーザーデータ (ユーザーデータとは何ですか?) として扱われるため、反復できません。

を with ac# メソッドに変換しJArrayJValue[]も機能しません。

私が見る限り、2つの可能な解決策があります。1. nlua の Iterable 関数を取得します。2. JArray を Lua テーブルに変換し、その上で for ループを使用します。

私はその2つのいずれにも成功していません。これについてもっと経験のある人はいますか?前もって感謝します。

私が試したこと:

regCommands は、JToken に多数の JObject を含む JArray です。

    jArray = Json:parseJArray(regCommands)

    for k, v in ipairs(jArray) do

        print(k.. " ".. v)

    end

これにより、jArray がユーザーデータである ipairs(jArray) でエラーが発生します。

    Json:parseJArray(JArray)

JArray を取り、JToken[] を吐き出す ac# 関数です

私が試した他の何か:

    keyVal = regCommands.First
    while keyVal ~= nil do
        if (type(JProperty)) then
            regCommands[keyVal.Name:lower()] = keyVal.First
        end
        keyVal = keyVal.Next
    end

regCommands[keyVal.Name:lower()] = keyVal.first これは、論理的な理由がなくてもクラッシュし ます。

ac# 列挙子を取得しても機能しません

    enumCommands = regCommands:GetEnumerator()

    enumCommands:MoveNext()
    repeat

        enumCommands:MoveNext()
    until enumCommands:Current() ~= nil
4

1 に答える 1

2

.NET コレクションを反復処理するには、luanet.each 関数を使用できます。これは、.NET 列挙型オブジェクトを反復処理する関数を返します。

local each = luanet.each

for k in each(jArray) do
    print (k)
end

例: https://github.com/codefoco/NLuaBox/blob/00af36aa480281ae33835173430a806c54c2f9dc/Resources/source/ScriptsDataSource.lua#L166

于 2015-05-08T19:25:56.073 に答える