NetLogo自定义扩展命令参数错误

NetLogo自定义扩展命令参数错误,netlogo,Netlogo,我遇到来自自定义扩展“myextension”的报告程序的问题。我正在使用NetLogo v.5.0.5 下面是Java类报告器的代码: 公共类DoActionPrimitive扩展了DefaultReporter{ @凌驾 公共语法getSyntax(){ 返回Syntax.commandSyntax( 新int[]{ Syntax.WildcardType(),//平台 Syntax.StringType(),//操作 Syntax.ListType()},//参数 Syntax.Wildc

我遇到来自自定义扩展“myextension”的报告程序的问题。我正在使用NetLogo v.5.0.5

下面是Java类报告器的代码:

公共类DoActionPrimitive扩展了DefaultReporter{
@凌驾
公共语法getSyntax(){
返回Syntax.commandSyntax(
新int[]{
Syntax.WildcardType(),//平台
Syntax.StringType(),//操作
Syntax.ListType()},//参数
Syntax.WildcardType());
}
公共对象报告(参数[]参数,上下文)
引发LogoException,ExtensionException{
//报告代码
}
}
下面是导致NetLogo编译错误的代码:

extensions[myextension]
全球[平台]
海龟自己的[登录?]
设置
清除所有
重置滴答声
创造海龟种群
设置平台myextension:创建“平台”
询问海龟[设置登录?登录]
结束
报告登录
报告myextension:do操作平台“登录”[“测试用户”“123456”]
结束
NetLogo代码选项卡在以下行中给出语法错误:

报告myextension:do操作平台“登录”[“测试用户”123456]
我谨此致辞:

“MYEXTENSION:DO-ACTION需要8191个输入、任意输入、字符串和列表。”
我猜reporter语法有问题,可能不可能将通配符类型与其他参数混合。我还尝试切换第一个和第二个参数,因此在WildcardType之前使用StringType,但错误相同,但在错误消息中切换参数

为什么NetLogo在指定语法输入之前需要8191个输入


谢谢

您使用的是
语法。commandSyntax
仅用于命令。您需要
Syntax.reporterSyntax
。假设
Syntax.WildcardType()
是您的返回类型,并且您希望报告程序能够由任何代理运行,那么您只需将
Syntax.commandSyntax
更改为
Syntax.reporterSyntax
,我相信。这引起了我的注意


您收到错误消息的原因(如果您好奇的话)是因为您的代码正在调用。然后,第二个参数被解释为命令的默认参数数(用于可变命令)。NetLogo中的类型是数字,其中每个二进制数字对应于一些基本类型。对于所有允许的类型,数字都有1;对于不在二进制表示形式中的类型,数字都有0。因此,基本类型(
NumberType
StringType
等)的一位数正好是1
WildcardType
应该是任何类型,因此对应于该类型的所有数字中都应该有1。它的二进制表示法是
1111111
,十进制是
8191
,是错误消息中的数字。

顺便提一下,这个问题写得非常好。谢谢布莱恩!!!我搜索了几个小时的错误。。。真丢脸,事实上,我还用正确的语法初始化编写了其他命令和报告程序。我需要多睡一会儿D