gpt4 book ai didi

scala - 无 :List[Int] as parameter

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

我有以下特征定义:

sealed trait List[+A]

// `List` data type, parameterized on a type, `A`
case object Nil extends List[Nothing]

// A `List` data constructor representing the empty list
/* Another data constructor, representing nonempty lists. Note that `tail` is another `List[A]`,
which may be `Nil` or another `Cons`.
*/
case class Cons[+A](head: A, tail: List[A]) extends List[A]

和一个函数:

  def add1(l: List[Int]): List[Int] =
foldRight(l, Nil:List[Int])((h,t) => Cons(h+1,t))

我的问题是,Nil:List[Int] 是什么意思?这是否意味着,我传递了一个类型为 Int 符号的 Nil 列表?

最佳答案

由于 fold(及其变体)根据第一个参数列表确定类型参数,您不能简单地传递 Nil,因为类型将派生为 List[Nothing](您还会看到第二个参数列表不匹配)。您可以使用类型归属来告诉 NilList[Int] 类型。您还可以将 List[Int] 作为类型参数传递:

foldRight[List[Int]](l, Nil)((h,t) => Cons(h+1,t))

作为引用,foldRight 签名是这样的:

def foldRight[B](z: B)(op: (A, B) => B): B

关于scala - 无 :List[Int] as parameter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42805613/

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