如果没有隐式定义,如何返回None或抛出异常?

时间:2015-05-29 03:02:56

标签: scala

我有这个功能:

case object Evaluator {
    import Ordering.Implicits._
    def eval[T: Ordering](x: T, y: T): Boolean = Some(x < y)
}

我希望如果用户将不受支持的对象发送到eval函数以返回None。 e.g:

case object Bar
assert(Evaluator.eval(Bar, 1) == None)

我该怎么做?

1 个答案:

答案 0 :(得分:4)

尝试为隐式参数提供默认值。

case object Evaluator{
    import Ordering.Implicits._
    def eval[T](x: T, y: T)(implicit ev:Ordering[T] = null):Boolan =
      if(ev == null)
        None 
      else
        Some(x < y)
}