2014-09-19 25 views
1

我想提取並排序模型中所有程序的列表。基本上我只想要可以在Observer上下文中運行的程序,只需要命令,而不是記者。工作區有一個.getProcedures():Map<String, Procedure>方法,我從中訪問Procedure對象。查找程序的「類型」(記者/命令和不同的上下文)

這引出了兩個相關的問題:1.有沒有辦法讓我找出一個Procedure對象是記者還是命令? NetLogo桌面版本似乎能夠做出這種區分,所以我認爲答案可能是肯定的。 2.有沒有辦法讓我找出程序的上下文是什麼,即它是一個補丁/龜/鏈接程序還是觀察程序?

回答

1

http://ccl.northwestern.edu/netlogo/docs/scaladoc/org/nlogo/nvm/Procedure.html顯示Procedure具有返回api.Syntax對象的語法方法。您需要的方法是ret(根據它是命令還是記者程序將爲Syntax.VoidTypeSyntax.WildcardType)和agentClassString(可能是例如「OTPL」)。

哦,其實我現在也看到,Procedure的第一個構造參數是Type tyype(多餘的y是因爲type是Scala中的關鍵字),所以對於問題的第一部分,您可以同樣檢查並查看無論是COMMAND還是REPORTER。信息冗餘存儲可能沒有任何好的理由。

+0

完美!非常感謝。 – 2014-09-19 15:22:05

相關問題