[英]Scala Context Bounds syntax error
我試圖查看我是否了解Scala中的Context Bounds,所以我寫了一個虛擬的示例來了解隱式變量如何傳遞。 我的代碼如下。
class Data(_x : Int) {
var x = _x
}
class DataOrdering extends Ordering[Data] {
def compare(d1 : Data, d2 : Data) : Int = d1.x - d2.x
}
def globalCompare[Data : Ordering](d1 : Data, d2 : Data) {
println("Global compare: " + implicitly[Ordering[Data]].compare(d1, d2))
}
def caller()(implicit d : Ordering[Data]) {
println("Caller")
globalCompare(new Data(5), new Data(100))
}
// Error method here
def caller2[Data : Ordering]() {
println("Caller2")
globalCompare(new Data(50), new Data(100))
}
def main() {
implicit val dataOrdering : DataOrdering = new DataOrdering
caller
caller2
}
main
caller()方法在調用globalCompare時按預期工作,但是caller2()給我一個編譯錯誤
error: class type required but Data found
globalCompare(new Data(50), new Data(100))
^
error: class type required but Data found
globalCompare(new Data(50), new Data(100))
^
我期望caller()和caller2()是等效的,但是我似乎缺少了一些東西。 有人可以向我解釋我在做什么錯嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.