我是 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/