繁体   English   中英

如何使scala类型更高的类型起作用

[英]how to get scala higher-kinded type to work

我正在努力提高对Scala中更高种类的类型的理解。 回到基础知识时,我坚持以下几点:

 def fooList[A <: Int](x: List[A]): List[A] = x.map{ e => e + 1 }

我不理解,Scala编译器不接受它。 “ A”必须是Int的子类。 因此,在Int下传递的任何类型都应该起作用。 为什么会抱怨? 有人可以在这里建议我吗?

中号

在这种情况下, A实际上必须是Int ,因为您不能创建Int的子类,但编译器似乎不想证明这一点。 的是,除了,因为A <: Int ,则+的方法Int返回一个Int

因此e + 1是一个Int而不是A (即使A必须是一个Int )。 因此, x.map(e => e + 1)返回List[Int]而不是List[A] 为了返回List[A] ,您需要一些带有+方法的类A ,该类也返回A ,但您不会这样做。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM