List 修改函数内的多个列表并在Scala中返回

List 修改函数内的多个列表并在Scala中返回,list,scala,functional-programming,List,Scala,Functional Programming,我在scala中有一个类型为[T]和[B]的列表,对象e的类型为e 我想创建一个接受这三个参数的函数: def doSomething(t : List[T], b List[B], e : E) { ... } 然而,我意识到列表是不可变的,传递给函数的任何内容都被视为val(而不是var)。但是我需要修改t和b,并将修改返回给函数的调用者。有人知道怎么做吗 我无法将列表更改为数组。。。因为我到处都在使用它,而且文件太大了。你应该使用更高阶的函数来修改t和b,比如map,filter,。。

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

我想创建一个接受这三个参数的函数:

def doSomething(t : List[T], b List[B], e : E) {
 ... }
然而,我意识到列表是不可变的,传递给函数的任何内容都被视为val(而不是var)。但是我需要修改t和b,并将修改返回给函数的调用者。有人知道怎么做吗


我无法将列表更改为数组。。。因为我到处都在使用它,而且文件太大了。

你应该使用更高阶的函数来修改
t
b
,比如
map
filter
,。。。并将其结果放入新的
val
s(例如
modifiedT
modifiedB
)。然后,您可以使用
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)
当然,这取决于“修改”的含义。
如果修改是复杂的事情,你应该考虑使用<代码>视图>代码>使计算懒惰以将计算时间移到稍后的时间点。

在<代码> e:e)<代码> >代码> > <代码> >代码> >{如果你要退货。你说得对,雷克斯,谢谢。我不知道我有多少次在Scala中忘记了这个小的
=
。。。