List 修改函数内的多个列表并在Scala中返回
我在scala中有一个类型为[T]和[B]的列表,对象e的类型为e 我想创建一个接受这三个参数的函数: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,。。
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中忘记了这个小的
=
。。。