gpt4 book ai didi

scala - 为什么 Scala 的类型推断器无法解决这个问题?

转载 作者:行者123 更新时间:2023-12-04 06:52:47 26 4
gpt4 key购买 nike

在下面的代码片段中 - 为什么我必须为 Nil 提供类型注释?

Welcome to Scala version 2.8.0.RC2 (OpenJDK Server VM, Java 1.6.0_18).
Type in expressions to have them evaluated.
Type :help for more information.

scala> List(Some(1), Some(2), Some(3), None).foldLeft(Nil)((lst, o) => o match { case Some(i) => i::lst; case None => lst })
<console>:6: error: type mismatch;
found : List[Int]
required: object Nil
List(Some(1), Some(2), Some(3), None).foldLeft(Nil)((lst, o) => o match { case Some(i) => i::lst; case None => lst })
^

scala> List(Some(1), Some(2), Some(3), None).foldLeft(Nil:List[Int])((lst, o) => o match { case Some(i) => i::lst; case None => lst })
res1: List[Int] = List(3, 2, 1)

最佳答案

问题是Nil是一个扩展 List 的对象.这意味着 Nil.typeList 的子类因此,foldLeft 的类型的累加器将是 Nil.type .

这是我希望 Scala 尝试一点(或很多,无论需要什么:)更难获得更好的类型推断的地方。

关于scala - 为什么 Scala 的类型推断器无法解决这个问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2878547/

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