以下是IntelijIDEA中的map1.scala文件
我似乎又一次撞墙了。我不知道为什么以下是错误:
abstract class List[T] {
def map[U](f: T => U): List[U] = {
this match {
case Nil => this
case x :: xs => ???
}
}
}
case Nil:模式类型与预期类型不兼容:找到Nil.type expected List [T] this:类型List [T]的表达式不符合预期类型List [U] x :: xs模式类型不兼容发现:: B必需列表[T] ..
我尝试了一切......但仍然有这个问题。不过知道请回复。
答案 0 :(得分:2)
实际上您的代码存在一些问题:
试试这个:
abstract class List[+A]
def head: A
def tail: List[A]
def map[B](f: A => B): List[B] =
if (this == Nil) Nil
else new ::(f(head), tail map f)
}
case object Nil extends List[Nothing] {
def head = ??? // not interested in throwing more appropriate exception
def tail = ???
}
case class ::[T](head: T, tail: List[T]) extends List[T]
然后你可以使用它
(1 :: 2 :: 3 :: Nil).map(_.toString)