簡體   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