gpt4 book ai didi

Scala for-comprehension 类型推断

转载 作者:行者123 更新时间:2023-12-04 16:34:54 25 4
gpt4 key购买 nike

下一个代码

  def f(chars: List[Char]): List[List[Char]] = chars match {
case Nil => List(Nil)
case x :: xs => for {
v <- f(xs)
} yield List(x) :: v
}

给出错误信息
- type mismatch;  found   : List[List[Any]]  required: List[List[Char]]

请帮助我理解为什么“for”在这里选择最通用的 Any 而不是 Char?我应该阅读语言规范中的哪个主题?谢谢。

最佳答案

结果,你是yieldingList[List[List[Char]]] 的混合体和 List[List[Char]] . Scala 将其向上转换为 List[List[Any]] .对于您的情况,以下任一项都可以完成这项工作:

scala>  def f(chars: List[Char]): List[List[Char]] = chars match {
| case Nil => List(Nil)
| case x :: xs => for {
| v <- f(xs)
| } yield x :: v
| }
f: (chars: List[Char])List[List[Char]]

scala> def f(chars: List[Char]): List[List[Char]] = chars match {
| case Nil => List(Nil)
| case x :: xs => for {
| v <- f(xs)
| } yield List(x) ++ v
| }
f: (chars: List[Char])List[List[Char]]

关于Scala for-comprehension 类型推断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16484830/

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