我正在开发netlogo扩展,我想添加一个命令,用户将告诉我没有参数的过程名称列表。 稍后我将执行此过程,但我唯一会知道的是之前传递给我的过程的名称。
用户将用于告知过程名称的命令如下:
qlearningextension:actions ["procedure1" "procedure2" "procedure3"]
稍后,扩展程序将执行此过程。我想知道是否有一种方法可以只使用名称来获取程序。
答案 0 :(得分:1)
我的建议是将原语的语法从接受字符串列表更改为接受可重复数量的匿名命令。您可以通过将语法设置为CommandType | RepeatableType
来实现。一个很好的参考应该是ControlFlow extension (cf
),它使用类似的技术为其可变的cf:iflese
原语接受至少1个,但可能是许多布尔/命令组合。
在编译时将检查提供的匿名命令的正确性,这意味着您不必依赖扩展名用户正确输入过程的名称,也不必忘记它们是否更改了名称。这些命令也可以在运行时由扩展名prim轻松执行,而您不必“搜索”要执行的正确过程(同样,请参见cf
示例)。
扩展程序的用户在使用“多于1个”可重复语法:(qlearningextension:actions [procedure1] [procedure2] [procedure3])