有人可以向我解释下面的Some()类的多个参数列表实现了什么?
我在阅读有关使用ClassTags的解决方案时遇到了这个问题:
Implicit parameter and ClassTag
object Other {
def apply[T: ClassTag](data: T)(implicit ordering: Ordering[T]): T =
Some(data)(implicitly, ordering.reverse)
}
作为所引用问题的答案,您可以像这样写Some.apply
:
def apply[T](data: T)(implicit evidence: ClassTag[T], ordering: Ordering[T]): T = data
或将Context Bounds
用于两种(句法糖),例如:
def apply[T: ClassTag: Ordering](data: T): T = data
因此,在Other
中,它使用显式参数调用Some.apply
(它更改顺序)。
因为只有one参数列表允许使用隐式参数,所以您还必须显式添加ClassTag
参数。
您可以通过implicitly
实现。