我有以下列表(只是一个例子 - 列表可以是任意深度);
val foo = List(1, List(2, List(3, 4)), List(5, List(6, List(7, List(8,9,10)))))
我想遍历列表,并用谓词中的某个值“替换”和元素。大意是什么
map(case 4 => 42 case x => x)
我希望它产生一个如下所示的新列表;
List(1, List(2, List(3, 42)), List(5, List(6, List(7,List(8,9,10)))))
我正在尝试通过下面的递归函数来做到这一点;
def copyListReplace(tree: List[Any], p: Any => Any): List[Any] = {
tree.map(x =>
x match {
case y: List[Any] => copyList(y.tail, p)
case t => p(t)
}
)
}
但我没有得到想要的结果;
scala>println(copyListReplace(foo, (x => x match{ case 4 => 42 case _ => t})))
List(1, List(List(42)), List(List(7)))
在此先感谢您的帮助!