Scala中的Some()的多个参数列表实现什么?

问题描述 投票:0回答:1

有人可以向我解释下面的Some()类的多个参数列表实现了什么?

我在阅读有关使用ClassTags的解决方案时遇到了这个问题:

Implicit parameter and ClassTag

object Other { 
  def apply[T: ClassTag](data: T)(implicit ordering: Ordering[T]): T =
    Some(data)(implicitly, ordering.reverse)
}
scala scala-collections
1个回答
2
投票

作为所引用问题的答案,您可以像这样写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实现。

也请检查文档:docs.scala-lang.org/tutorials/FAQ/context-bounds

© www.soinside.com 2019 - 2024. All rights reserved.