我想根据本书第 72 页的 excersize 实现一个类型参数化的函数(使用过滤器实现 forall):
def forallA[B <: A](xs:List[A])(f:A => B) : List[B] = {
xs.filter(x => true) match {
case Nil => Nil
case y :: ys => f(y) :: forallA(ys)(f)
}
}
但是,编译器(2.9.1)抱怨类型 A 未定义。显然不应该这样,因为同一本书中的多个示例都使用这种语法。该问题可以通过将函数类型参数更改为[A, B <: A]
. 我是不是做错了什么,还是又是 Scala 语法规范的一个巨大变化?如果是这样,坦率地说,我厌倦了在每一秒的练习中用如此愚蠢的问题轰炸 SO。谁能推荐一本清楚地反映当前事物秩序的书?