诊断netlogo扩展命令错误

时间:2013-12-17 23:50:26

标签: netlogo

当我尝试执行first-n-integers扩展示例时:

显示噪音:first-n-integers 5

我在控制台或代码选项卡中收到错误“ERROR:Expected command。”。 我大部分都是按原样复制和粘贴类示例,只是重命名它们并将它们放在不同的包中。我希望错误更具描述性,因为我怀疑我在某个地方犯了一个简单的错误。

我在x64 Windows 7计算机上使用5.0.4而没有JRE和1.7.0_45 JRE / JDK。

我的manifest.txt文件在版本行的末尾带有完全限定的类管理器和crlf -

Manifest-Version: 1.0
Extension-Name: noise
Class-Manager: org.xyz.extensions.NoiseExtension
NetLogo-Extension-API-Version: 5.0  <--there is a crlf here

jar在我的模型文件

的子文件夹中
test/
  test.nlogo
  noise/
    noise.jar

这是我的班主任:

package org.xyz.extensions;

import org.nlogo.api.*;

public class NoiseExtension extends DefaultClassManager {
  public void load(PrimitiveManager primitiveManager) {
    primitiveManager.addPrimitive(
      "first-n-integers", new org.xyz.extensions.NoiseGenerator());
  }
}

这是NoiseGenerator文件:

package org.xyz.extensions;
import org.nlogo.api.*;

public class NoiseGenerator extends DefaultReporter {

public Syntax getSyntax() {
    return Syntax.reporterSyntax(
    new int[] {Syntax.NumberType()}, Syntax.ListType());

}

public Object report(Argument args[], Context context) throws ExtensionException {
// create a NetLogo list for the result
LogoListBuilder list = new LogoListBuilder();
int n ;
// use typesafe helper method from
// org.nlogo.api.Argument to access argument
try {
  n = args[0].getIntValue(); 
}
catch(LogoException e) {
  throw new ExtensionException( e.getMessage() ) ;
}
if (n < 0) {
// signals a NetLogo runtime error to the modeler
throw new ExtensionException
  ("input must be positive");
}
// populate the list. note that we use Double objects; NetLogo
// numbers are always Doubles
for (int i = 0; i < n; i++) {
  list.add(Double.valueOf(i));
}
return list.toLogoList();

} }

感谢您的帮助。

AJB

1 个答案:

答案 0 :(得分:1)

这是在这里被问到并回答的:

https://groups.google.com/d/msg/netlogo-devel/eIq8drflsc8/7y_Ooh6R0sgJ

答案是纠正getSynaxgetSyntax的拼写。