我想编写一个适用于任何具有总排序的Scala 类型的函数(即我可以在其上使用'<')。那是什么语法?我想出的最好的是
def lessThan[T <: Ordered[T]](x: T, Y: T) = x < y
但是,当我尝试从 REPL 使用它时,这不起作用:
scala> lessThan(1, 2)
<console>:8: error: inferred type arguments [Int] do not conform to method lessThan's type parameter bounds [T <: Ordered[T]]
lessThan(1, 2)
^
scala> import runtime._
import runtime._
scala> lessThan(new RichInt(1), new RichInt(2))
<console>:8: error: inferred type arguments [scala.runtime.RichInt] do not conform to method lessThan's type parameter bounds [T <: Ordered[T]]
lessThan(new RichInt(1), new RichInt(2))
本质上,我相信我想要这个 Haskell 代码的等价物:
lessThan :: (Ord a) => a -> a -> Bool
lessThan x y = x < y
我在 Debian 系统上使用 scala 2.7.3。
我错过了什么,在哪里?