1

だから私はLuaの初心者で、JavaコードでLuaJavaを実行していますが、Luaのハッシュマップでforeachループを実行する方法を見つけようとして立ち往生しています。

私のJavaコードには次のものがあります:

ジャワ

public class EntityManager {

    public static EntityManager EntityManager = new EntityManager();

    private Map<Integer, Entity> entities = new HashMap<Integer, Entity>();

    public Map<Integer, Entity> entities() {
        return entities;
    }
        ....
}

public class Entity {
    private int id;
    ....
    public int getId() {
        return id;
    }

    public EntityManager getManager() {
        return EntityManager.EntityManager;
    }
}

次に、lua スクリプトを取得し、EntityManager のハッシュマップ内のすべてのエンティティを反復処理する方法を見つけようとしています。

ルア

owner = {} -- I set this to an Java object that is a child of the Entity class
function doSomeStuff()
    for i, e in pairs(owner:getManager():entities()) do
        if (e:getId() ~= owner:getId()) then
            -- Do some stuff here
        end
    end
end

関数などを機能させるために設定する必要があるものはほとんどすべて揃っていますが、Java の foreach ループに相当する Lua を作成して、Lua スクリプトで Java ハッシュマップを反復処理する方法がわかりません。

また、Lua でオブジェクトのタイプをチェックして、それが私の Java クラスの 1 つのインスタンスであるかどうかを確認する方法を知りたいです。たとえば、Java でオブジェクトがオブジェクト型かどうかを確認するには、次のようにします。

Entity e;
....
if (e instanceof EntityTypeA) {
    // e is of Entity type A
} else if (e instanceof EntityTypeB)
    // e is of Entity type B
}

ああ、Lua スクリプトに渡す Java オブジェクトがその Java クラス タイプを保持しているかどうかは完全にはわかりません。また、そのようなことを行う方法もわかりません。

ちなみに、Kepler ProjectのLuaJavaを使っています。

ありがとう。

4

0 に答える 0