我将一个NetLogo列表从NetLogo传递到NetLogo (扩展),然后再将它发送回NetLogo,在那里我想将它作为参数使用到另一个过程。但是当我将它发送回NetLogo时,LogoList的Java表示形式似乎已经改变了,因此它包含逗号,即
[0 0]变成了[0, 0],当我传递它时,NetLogo会抱怨它。(它说它期望有一个常数。)
当我从ExtensionCode中的参数中检索列表时,我使用args.getList()。
顺便说一下,我把它作为字符串传回给NetLogo。我非常需要这样做,因为作为迭代字符串构建过程的一部分,我正在这样做。我希望还是有办法的。
这有道理吗?我做错了什么吗?我想我可以将LogoList转换成迭代器,然后用LogoListBuilder构建一个新的LogoList,但是我想知道是否有更好的方法:我应该做什么才能将LogoList发送回没有逗号的NetLogo呢?
发布于 2014-07-10 12:09:56
若要将LogoList (或任何其他NetLogo值)转换为字符串,请不要使用.toString;这只适用于调试。在org.nlogo.api.Dump.logoObject上调用LogoList将生成Logo样式的表示,而不是Java样式的表示。
发布于 2014-07-16 08:11:40
我不知道这是否可以为@Seth添加一些内容,但是如果您还需要用Java构建列表,也可以在DefaultReporter中使用:
LogoListBuilder newList = new LogoListBuilder();
// do your stuff... then:
return newList.toLogoList();这样,当您在NetLogo中处理列表时,它的格式是正确的。
https://stackoverflow.com/questions/24676146
复制相似问题