首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NetLogo亚种

NetLogo亚种
EN

Stack Overflow用户
提问于 2014-09-17 11:57:46
回答 1查看 658关注 0票数 3

我是NetLogo新手,我对以下代码有一些疑问:

代码语言:javascript
复制
people-own [
  walker-type   ;; can be "cautious", "adaptive" or "reckless"
  walked-through-red?
  own-profit
  adaptive-threshold-time-gained
  adaptive-threshold-time-gained-people-crossing
  adaptive-gone-reckless
  cooldown
]

在OO背景下,我认为这是对象属性( people品种)的某种枚举。你可以清楚地看到,有三种类型的人:谨慎步行者,适应性步行者和鲁莽步行者。此外,以adaptive (adaptive-threshold-time-gained等)开头的属性只有在当前人员是adaptive时才有意义。

我希望有办法更优雅地表达这一点。在OO编程语言中,您将使用继承来创建三个子类(每个walker-type一个子类),但到目前为止,我知道NetLogo中不存在这样的子类。

建议的表达方式是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-17 19:29:23

缺乏遗传(也许是作为亚种)是NetLogo的一个严重限制,尽管最终它只是偶尔对我有影响。根据应用程序的不同,有几个可能的解决方案。

  1. 如果您只想要一些不同的数据属性,并且相关的类型是模拟中唯一的turtles,那么您可以拥有turtles-own的公共特性,而breeds-own只具有类型特定的特征。
  2. 如果数据属性都是共享的,但行为不同,则可以创建自己的代理集(在您的情况下,是people的子集),并对每个代理集调用不同的过程(或者编写在member?测试中分支的过程)。不幸的是,如果创建了任何新成员,则必须显式地增强这些代理集,因此您将失去品种的“特殊代理集”功能。

hth。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25889949

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档