如何编写scala函数以接受两种类型的参数?

时间:2018-11-28 18:56:10

标签: scala generics

我有两个功能:

def capPredDouble(rawPred: Double): Double = {
  if (label == "1") {
    Math.min(1.0, rawPred)
  } else {
    Math.max(0, rawPred)
  }
}


def capPred(rawPred: Float): Float = {
  if (label == "1") {
    Math.min(1.0f, rawPred)
  } else {
    Math.max(0, rawPred)
  }
}

是否可以使用多态性使其成为一个功能?

1 个答案:

答案 0 :(得分:3)

这似乎起作用。

def capPred[N](rawPred :N)(implicit ev :Numeric[N]) :N =
  if (<some condition>) ev.min(ev.one,  rawPred)
  else                  ev.max(ev.zero, rawPred)