所以我是 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。
谢谢。