gpt4 book ai didi

scala: list.flatten: 没有找到匹配参数类型 (Any) => Iterable[Any] 的隐式参数

转载 作者:行者123 更新时间:2023-12-04 19:49:56 25 4
gpt4 key购买 nike

在 scala 2.7.6 中编译这段代码:

def flatten1(l: List[Any]): List[Any] = l.flatten

我得到错误:

no implicit argument matching parameter type (Any) = > Iterable[Any] was found

为什么?

最佳答案

如果您希望能够将 List(1, 2, List(3,4), 5)“扁平化”为 List(1, 2, 3, 4, 5),那么你需要这样的东西:

implicit def any2iterable[A](a: A) : Iterable[A] = Some(a)

连同:

val list: List[Iterable[Int]] = List(1, 2, List(3,4), 5) // providing type of list 
// causes implicit
// conversion to be invoked

println(list.flatten( itr => itr )) // List(1, 2, 3, 4, 5)

编辑:以下是我的原始答案,直到 OP 在对 Mitch 的答案的评论中澄清了他的问题

当您扁平化 List[Int] 时,您期望发生什么?您是否希望函数对 List 中的 Int 求和?如果是这样,您应该查看 2.8.x 中的新聚合函数:

val list = List(1, 2, 3)
println( list.sum ) //6

关于scala: list.flatten: 没有找到匹配参数类型 (Any) => Iterable[Any] 的隐式参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1598699/

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