如何在 Scala 中编码以下约束(伪代码)?
def foo(x: T forSome { type T has a Numeric[T] instance in scope }) = {
val n= implicitly[...] // obtain the Numeric instance for x
n.negate(x) // and use it with x
}
换句话说:我的输入参数需要一个类型类实例,但我不关心参数的类型,我只需要获取实例并将其用于我的参数。
它不必是存在类型,但我需要避免在def
的签名中使用类型参数。
编辑:只是为了澄清,在这些情况下的标准方法,即:
def foo[T: Numeric](x: T) = ...
对我不起作用,因为它需要在方法上添加类型参数。
谢谢。