rev*_*end 2 generics types scala
我一直在尝试确定如何编写一个类型参数,将函数限制为支持关系运算符的类型?
例如:
def biggerOf[A <: ???](a: A, b: A): A = { if (a > b) a else b }
Run Code Online (Sandbox Code Playgroud)
???我的困境在哪里。高级类型参数位对我来说是新的,所以寻求一点帮助。认为 AnyVal 可能是赢家,但对于 Unit 类型(和 Boolean 不会中断,但也不会起作用)。感谢您的任何想法。
您想使Ordering类型类发挥作用。
import scala.math.Ordering.Implicits.infixOrderingOps
def biggerOf[A:Ordering](a: A, b: A): A = { if (a > b) a else b }
Run Code Online (Sandbox Code Playgroud)
A:Ordering限制A到在类型Ordering类型类和infixOrderingOps能够使便利性运算符(方法),诸如<,>=等