在Scala中创建许多对象

在Scala中创建许多对象,scala,agent-based-modeling,Scala,Agent Based Modeling,我正在创建一个(简单的)基于代理的模型来学习Scala和函数式编程 我已经用Python创建了它,所以我的想法是按照已经存在的想法编写代码,但刚开始时我遇到了一个问题: 我有一个类描述模型中的代理,另一个类描述它所生活的社会。社会由N个代理人组成,其中N是一个整数。 在Python中,我会使用列表理解来存储该类的所有实例,但在Scala中如何做到这一点?是否有比使用以下代码更好的方法: 进口代理。代理 阶级社会([为简洁起见省略]){ val tmp_agents=List() 为了 上面的一个

我正在创建一个(简单的)基于代理的模型来学习Scala和函数式编程

我已经用Python创建了它,所以我的想法是按照已经存在的想法编写代码,但刚开始时我遇到了一个问题:

我有一个类描述模型中的代理,另一个类描述它所生活的社会。社会由N个代理人组成,其中N是一个整数。 在Python中,我会使用列表理解来存储该类的所有实例,但在Scala中如何做到这一点?是否有比使用以下代码更好的方法:

进口代理。代理
阶级社会([为简洁起见省略]){
val tmp_agents=List()
为了
上面的一个将帮助您对您尝试构建的程序进行建模。您可以使用foldLeft构建相同的程序,您可以将其附加到列表中,然后反转列表。您不需要任何变异或可变数据结构

上面的一个将帮助您对您尝试构建的程序进行建模。您可以使用foldLeft构建相同的程序,您可以将其附加到列表中,然后反转列表。您不需要任何变异或可变数据结构


您可以在scala中使用
map
执行类似的操作

val tmp_agents = (1 to puntos).toList.map(i -> new Agent(pos_X = 0, name="Agent "+i))

如果您不关心数据的形状,只想在一个集合中存放代理,则可以省略
.toList
部分。您可以使用scala中的
映射执行类似操作

val tmp_agents = (1 to puntos).toList.map(i -> new Agent(pos_X = 0, name="Agent "+i))
如果您不关心数据的形状,而只希望有一个集合来存放代理,那么可以省略
.toList
部分,正如我常说的,这是您的朋友

val agents = List.tabulate(n) { i =>
  new Agent(pos_X = 0, name=s"Agent $i")
}
(另外,我建议为您的代理使用case类,并遵循Scala命名约定)

正如我常说的,客户是您的朋友

val agents = List.tabulate(n) { i =>
  new Agent(pos_X = 0, name=s"Agent $i")
}

(另外,我建议为您的代理使用案例类。并遵循Scala命名约定)

太好了!我喜欢map!谢谢!太好了!我喜欢map!谢谢!我不知道制表。现在很多事情似乎更简单了谢谢!不知道制表。现在很多事情似乎更简单了