我对 Scala 和 H2O 很陌生。我知道 Scala 中有扩展类。但我想要做的是有两个同名但参数类型不同的类。
我希望当我调用 test 时,如果我将 String 或 Double 参数放入其中。该类将识别我放入其中的数据类型并运行正确的函数。谢谢你的帮助!
我对 Scala 和 H2O 很陌生。我知道 Scala 中有扩展类。但我想要做的是有两个同名但参数类型不同的类。
我希望当我调用 test 时,如果我将 String 或 Double 参数放入其中。该类将识别我放入其中的数据类型并运行正确的函数。谢谢你的帮助!
您可以对您的类进行参数化以使其“通用”:
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
}
}
}