假设我有以下代码:
savingObjectContext
我不想用class MyClass[K, V](val elements: Seq[(K, V)] {
def myFunc() = {
if (k is ordering) {
MyProcess[K, V](elements)
} else {
otherthing
}
}
}
class MyProcess[K: Ordering, V](val content: Seq[(K, V)]) {
//
}
约束类型K,因为在某些条件下,我不想要这个,但是如何在MyProcess中使用隐式排序类型K?
答案 0 :(得分:2)
首先,这样做可能是一个坏主意。但如果你真的确定这是你想要的,那就有可能。您必须要求可选隐式值Ordering[K]
。然而,这不是开箱即用的。
免责声明/警告:提前进行无耻的自我推销
我最近将一个库推送到github,以便使用一些隐式解析技巧。它包含Optional
typeclass,可以满足您的需求。
使用它,您的代码将如下所示:
import implicitlogic.Optional
class MyClass[K, V](val elements: Seq[(K, V)]) {
def myFunc()(implicit opt: Optional[Ordering[K]]) = opt.result match {
case Some(ordering) => new MyProcess[K, V](elements)(ordering)
case None => otherthing
}
def otherthing = ???
}
class MyProcess[K: Ordering, V](val content: Seq[(K, V)])