所以我是Lua的新手,我已经使用我的Java代码运行了LuaJava,但是我一直试图弄清楚如何在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中的所有实体:
的Lua
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,来迭代我的Java hashmap Lua剧本。
此外,我想知道如何检查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类类型,我也不知道如何去做这样的事情。
顺便说一下,我正在使用开普勒项目的LuaJava。
感谢。