簡體   English   中英

什么時候應該在Scala的通用類中使用類型綁定?

[英]When should I use type bound in generic class in scala?

我有一個像這樣的通用類,並且我只想在T為Int時調用函數“ one”。

class A[T] {
    def one[T <: Int] = 1
}
val a = new A[String]
a.one

但這會編譯。

我發現我可以這樣做:

class A[T] {
    def one(implicit ev: T <:< Int) = 1
}
val a = new A[String]
a.one
<console>:14: error: Cannot prove that String <:< Int.

為什么?

在第一種情況下,您有兩個不同且不相關的 T參數:一個在類上,另一個在方法上。 因此,當您呼叫a.oneone人的TInt

在第二種情況下, one沒有自己的T參數,所以在T <:< Int你有AT 當您調用a.oneAT是不滿足界限的String

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM