gpt4 book ai didi

scala - 在 Scala 中执行数百万个独特转换的函数式方法是什么?

转载 作者:行者123 更新时间:2023-12-02 09:26:49 25 4
gpt4 key购买 nike

我有一个对象Person,这个对象经历了数百万次独特的转换,并且这些转换必须按顺序完成。

传统上,我可以这样做:

var bob = new Person()
birth(bob)
oneYearOld(bob)
middleSchool(bob)
highSchool(bob)
// ...million more transformations

所以我的问题是,如何在 Scala 中实现功能性(无副作用/纯函数)?如果我使用 val bob,我是否会创建数百万个 bob 副本,这可能会导致内存问题?

最佳答案

您可以使用function composition

i(h(g(f(bob))))

实现此目的的一种方法是将所有转换放入序列(或缓冲区或列表或..)中,然后应用它们

val finalBob = functionsSeq.foldleft(bob) { case (xformBob, fn) => fn(xformBob) }

函数组合是为了表达清晰、优雅。每个转换都将涉及从(不可变的)现有实例生成一个新实例:这是纯函数式编程的主要目标。

fp 方法不会节省内存消耗/对象生成。但是 - 正如评论者所指出的 - 这些对象位于堆上,生命周期短暂,并且很容易被垃圾收集器管理/消耗。

关于scala - 在 Scala 中执行数百万个独特转换的函数式方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37221753/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com