list - 如何在函数式编程中对状态变化进行建模

标签 list scala object functional-programming immutability

我是 FP 新手,也是 Scala 新手,我有一个关于如何以函数式方式有效解决问题的问题。

假设我有:

案例类 Store(storedObjects: List[StoreObject])

案例类 StoreObject(name: String)

我想将所有 StoreObjects 存储在 Store 中。

Store case class 不可变时,如何将新的 StoreObject 添加到 List 中?

举第二个例子:假设我有一个 case 类 Person,如下所示,

案例类 Person(名称:字符串) 和一个名为 object PersonController

的对象

它拥有一个不可变的 Person 列表,每次创建一个新的 Person 时,我都想将其添加到 PersonController 中的列表中.

有没有办法在 fp 或模式中做到这一点?

或者切换到可变性是执行此类操作的唯一有效方法(由于多线程,这会很痛苦)。

感谢您的帮助 艾克冈

最佳答案

我认为您现在缺少的主要想法是根本变异的可能性,但实际上使用添加/删除操作的结果创建一个新对象。

用于添加...类似的内容,例如:

def add(sObject: StoreObject, store: Store) = store.copy(storedObjects = store.storedObjects :+ sObject)

这将返回一个保存列表的新Store

希望这是有道理的并解答您的疑问。

关于list - 如何在函数式编程中对状态变化进行建模,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31818427/

相关文章:

scala - 如何使 Scala 控制抽象重复直到?

scala - 如何安装旧版本的sbt?

database - 在 Play 框架中使用数据库

javascript - 无法设置对象属性以存储到对象数组(JavaScript)

python - 从具有特定索引的python列表中挑选项目

list - Prolog 中的排序

Python - 基于多个键的字典过滤列表

c - 从C中的链表中删除最后两个元素

java - 关于类型转换对象

javascript - 结合旧的和新的设置