0

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

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

4

1 回答 1

3

您可以对您的类进行参数化以使其“通用”:

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

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

如果你想限制你的类型String并且Double你不能同时使用这两个边界。您必须为这两个找到共同的父类。是Any。它不会帮助你很多。

例如。您需要实现一些取决于类型的方法应该应用不同的行为。为此,我建议您使用模式匹配。

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

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

  }
于 2015-10-30T15:47:03.053 回答