【发布时间】:2011-09-12 15:00:55
【问题描述】:
这个方法是我写的
def compare[U, T <: Comparable[U]](a: T, b: U) = a.compareTo(b)
它适用于 String 和 Integer,但不适用于 Int 或 RichInt。 那么为什么 Int 不能自动转换为 Integer?
【问题讨论】:
这个方法是我写的
def compare[U, T <: Comparable[U]](a: T, b: U) = a.compareTo(b)
它适用于 String 和 Integer,但不适用于 Int 或 RichInt。 那么为什么 Int 不能自动转换为 Integer?
【问题讨论】:
使用简单的上下文绑定需要编译器在将转换后的值传递给方法之前应用隐式转换。我相信你想要的是这个,而不是:
def compare[U, T <% Comparable[U]](a: T, b: U) = a.compareTo(b)
这里,'a' 的隐式包装将发生在方法的实现中,所以你应该能够得到你想要的。不过,我并不完全清楚哪些用法让您失望了 - 您应该尝试包括哪些无效的示例,以便我们可以确定何时尝试回答!
【讨论】: