加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-16 19:11:06 所属栏目:安全 来源:网络整理
导读:我在 scala中有一个类型为[T]和[B]的列表,其对象e为E类型. 我想创建一个接受这三个参数的函数: def doSomething(t : List[T],b List[B],e : E) { ... } 但是我意识到List是不可变的,传递给函数的任何东西都被认为是val(不是var).但我需要修改t和b并将修改返
我在 scala中有一个类型为[T]和[B]的列表,其对象e为E类型.

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

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

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

我无法将列表更改为数组…因为我一直在使用它,文件太大了..

解决方法

您应该使用更高阶函数(如map,filter,…)以函数方式修改t和b,并将它们的结果放入新的val(例如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)

当然这取决于你对“修改”的意思.如果这种修改很复杂,你应该考虑使用视图使计算变得懒惰,以便将计算时间移到以后的某个时间点.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读