如何在Scala中执行重载?

时间:2015-10-30 15:41:02

标签: scala override h2o

我对Scala和H2O很新。我知道Scala中有扩展类。但我想要做的是有两个具有相同名称但参数类型不同的类。

我希望当我调用test时,如果我将String或Double参数放入其中。该类将识别我输入的数据类型并运行正确的函数。谢谢你的帮助!

1 个答案:

答案 0 :(得分:3)

您可以对您的课程进行参数化,使其成为通用的':

class test[T](a: T, b: T) extends MRTask {}

因此,当您在现实生活中使用此类时,将根据您的输入自动确定T类型。 对于test("str", "str" )T将为String

如果您想使用StringDouble来限制类型,则不能同时使用这两个边界。你必须为这两个找到共同的父类。它是Any。它对你没什么帮助。

对于前。你需要实现一些依赖于类型的方法应该应用不同的行为。为此,我建议您使用模式匹配。

  case class test[T <: Any](a :T, b: T) { 

    def foo (): T = {
      a match {
        case d: Double => d
        case s: String => s
      }
    }

  }