gpt4 book ai didi

scala - 从数组到列表的隐式转换

转载 作者:行者123 更新时间:2023-12-04 05:26:45 25 4
gpt4 key购买 nike

如何编写从Array[_]List[_]类型的隐式转换?我尝试了以下方法,但似乎不起作用。

scala> implicit def arrayToList[A : ClassManifest](a: Array[A]): List[A] = a.toList
<console>:5: error: type mismatch;
found : Array[A]
required: ?{val toList: ?}
Note that implicit conversions are not applicable because they are ambiguous:
both method arrayToList in object $iw of type [A](a: Array[A])(implicit evidence$1: ClassManifest[A])List[A]
and method genericArrayOps in object Predef of type [T](xs: Array[T])scala.collection.mutable.ArrayOps[T]
are possible conversion functions from Array[A] to ?{val toList: ?}
implicit def arrayToList[A : ClassManifest](a: Array[A]): List[A] = a.toList
^

最佳答案

implicit def arrayToList[A](a: Array[A]) = a.toList

似乎能按预期工作。我的猜测是 genericArrayOps中已经有一个 Predef,该签名具有从 Array[T] -> ArrayOps[T]隐式转换的签名, ArrayOps[T]具有 .toList(): List[T]方法。您的方法具有签名 Array[T] -> List[T],这也使方法 .toList[T]可用。主体要求使用该签名进行隐式转换。编译器不知道使用 arrayToList会使该方法陷入无限循环,从而导致歧义错误。但是,类型推断返回类型似乎可以解决此问题。隐式解析似乎与类型推断并不一致。

还要注意的是,由于默认情况下已经存在一个隐式转换,它将为您提供所需的内容,因此无需从 ArrayList进行隐式转换。

关于scala - 从数组到列表的隐式转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4982432/

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