[英]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.one
, one
人的T
為Int
。
在第二種情況下, one
沒有自己的T
參數,所以在T <:< Int
你有A
的T
。 當您調用a.one
, A
的T
是不滿足界限的String
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.