我正在尝试提取和排序模型中所有过程的列表。基本上我只想要在Observer上下文中运行的程序,只需要命令,而不是记者。工作区有一个.getProcedures():Map<String, Procedure>
方法,我从那里访问过程对象。
这引出了两个相关的问题:1。我有没有办法找出Procedure
对象是记者还是命令? NetLogo桌面版似乎能够做出这种区分,所以我认为答案可能是肯定的。 2.有没有办法让我找出程序的上下文是什么,即它是补丁/乌龟/链接程序还是观察程序?
答案 0 :(得分:1)
http://ccl.northwestern.edu/netlogo/docs/scaladoc/org/nlogo/nvm/Procedure.html显示Procedure具有返回api.Syntax
对象的语法方法。您需要的方法是ret
(根据它是{1}}还是Syntax.VoidType
,根据它是命令还是记者程序)和Syntax.WildcardType
(可能是例如agentClassString
&#34; OTPL&#34;。)
哦实际上我现在也看到了Procedure的第一个构造函数参数是Type tyype
(额外的y是因为type
是Scala中的关键字),所以对于问题的第一部分,你同样可以检查一下,看看它是COMMAND
还是REPORTER
。信息冗余存储可能没有任何正当理由。