1

所以我是 Lua 的新手,我已经让 LuaJava 与我的 Java 代码一起运行,但我一直在试图弄清楚如何在 Lua 中的 hashmap 上运行 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 中遍历 hashmap 中的所有实体:

卢阿

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 类之一的实例。例如,在 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