gpt4 book ai didi

list - 在一个函数中修改多个列表并在Scala中返回

转载 作者:行者123 更新时间:2023-12-04 13:24:54 25 4
gpt4 key购买 nike

我在scala中有一个类型为[T]和[B]的列表,对象类型为E。

我想制作一个接受这三个参数的函数:

def doSomething(t : List[T], b List[B], e : E) {
... }

但是我意识到List是不可变的,传递给函数的任何东西都被视为val(而不是var)。但是我需要修改t和b并将修改返回给函数的调用者。有谁知道如何做到这一点?

我无法将列表更改为数组...因为我到处都在使用它,所以文件很大。

最佳答案

您应该使用诸如tb,...之类的高阶函数以功能方式修改mapfilter,并将它们的结果放入新的val s中(例如modifiedTmodifiedB)。然后,您可以使用Tuple2从该方法返回2个值。

def doSomething(t: List[T], b: List[B], e: E) = {
// somehting you want to do
val modifiedT = t.map(...).filter(...)
val modifiedB = b.map(...).filter(...)
(modifiedT, modifiedB) // returns a Tuple2[List[T], List[B]]
}

然后,在调用方法中,您可以通过以下方式分配值:
val (t2, b2) = doSomething(t, b, e)

当然,这取决于您对“修改”的含义。
如果此修改很复杂,则应考虑使用 view使计算变得懒惰,以将计算时间移至稍后的时间点。

关于list - 在一个函数中修改多个列表并在Scala中返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3724521/

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