如何在 NetLogo 扩展中使用 "print" 或 "show"?
How to use "print" or "show" from within a NetLogo Extension?
我正在编写一个扩展程序,它会在调用时对 NK 景观执行大量搜索。我想让扩展名“打印”或“显示”搜索进度或在搜索过程中可能找到的特定值。我曾经知道如何从扩展程序发送一个字符串到控制台,但不记得如何这样做或找到任何文档来从 API.
获取控制台的控制权
它是在 NetLogo 代码的 GUI 部分定义的,因此它不是“官方”扩展的一部分 API。但您仍然可以使用它。 GIS 扩展是这样做的(Java 代码):https://github.com/NetLogo/GIS-Extension/blob/hexy/src/org/myworldgis/netlogo/GISExtensionState.java#L92-L112
请注意,如果无头 (BehaviorSpace) 和 GUI 模式之间的用法对您的扩展很重要,则不同。
public void displayWarning(String warning) {
if (_workspace instanceof HeadlessWorkspace) {
_workspace.warningMessage(warning);
} else if (_workspace instanceof AbstractWorkspace) {
AbstractWorkspace ws = (AbstractWorkspace) _workspace;
ws.outputObject(warning, null, true, false, OutputDestinationJ.NORMAL());
}
}
public void displayWarning(String warning, Object owner) {
if (_workspace instanceof HeadlessWorkspace) {
_workspace.warningMessage(warning);
} else if (_workspace instanceof AbstractWorkspace) {
AbstractWorkspace ws = (AbstractWorkspace) _workspace;
try {
ws.outputObject(warning, owner, true, false, OutputDestinationJ.NORMAL());
} catch (LogoException e) {
displayWarning(warning);
}
}
}
它从扩展管理器中捕获工作区实例,当它在 runOnce
NetLogo 调用扩展加载时传递到这里的扩展状态对象时:https://github.com/NetLogo/GIS-Extension/blob/74b50dcf4ec26df55b7582d288d4f8b2171bbd09/src/org/myworldgis/netlogo/GISExtension.java#L101
我正在编写一个扩展程序,它会在调用时对 NK 景观执行大量搜索。我想让扩展名“打印”或“显示”搜索进度或在搜索过程中可能找到的特定值。我曾经知道如何从扩展程序发送一个字符串到控制台,但不记得如何这样做或找到任何文档来从 API.
获取控制台的控制权它是在 NetLogo 代码的 GUI 部分定义的,因此它不是“官方”扩展的一部分 API。但您仍然可以使用它。 GIS 扩展是这样做的(Java 代码):https://github.com/NetLogo/GIS-Extension/blob/hexy/src/org/myworldgis/netlogo/GISExtensionState.java#L92-L112
请注意,如果无头 (BehaviorSpace) 和 GUI 模式之间的用法对您的扩展很重要,则不同。
public void displayWarning(String warning) {
if (_workspace instanceof HeadlessWorkspace) {
_workspace.warningMessage(warning);
} else if (_workspace instanceof AbstractWorkspace) {
AbstractWorkspace ws = (AbstractWorkspace) _workspace;
ws.outputObject(warning, null, true, false, OutputDestinationJ.NORMAL());
}
}
public void displayWarning(String warning, Object owner) {
if (_workspace instanceof HeadlessWorkspace) {
_workspace.warningMessage(warning);
} else if (_workspace instanceof AbstractWorkspace) {
AbstractWorkspace ws = (AbstractWorkspace) _workspace;
try {
ws.outputObject(warning, owner, true, false, OutputDestinationJ.NORMAL());
} catch (LogoException e) {
displayWarning(warning);
}
}
}
它从扩展管理器中捕获工作区实例,当它在 runOnce
NetLogo 调用扩展加载时传递到这里的扩展状态对象时:https://github.com/NetLogo/GIS-Extension/blob/74b50dcf4ec26df55b7582d288d4f8b2171bbd09/src/org/myworldgis/netlogo/GISExtension.java#L101