如何将对象作为方法中的参数传递?

时间:2018-05-26 15:43:16

标签: scala

我最近开始使用scala和spark。我很乐意为你提供更好的建议。

我在folder1中有3个具有相同数量的val和相同名称的对象。

  object Obj1 {

  val className = "className1"

  val dimensions = Array(
    "d1",
    "d2"
  )

  val metrics = Array(
    "m1",
    "m2"
  )

  object Obj2 {

  val className = "className2"

  val dimensions = Array(
    "d1",
    "d2"
  )

  val metrics = Array(
    "m1",
    "m2"
  )

  object Obj3 {

  val className = "className3"

  val dimensions = Array(
    "d1",
    "d2"
  )

  val metrics = Array(
    "m1",
    "m2"
  )

我想简化这个:

  val df1 = method(Obj1.className, Obj1.dimensions, Obj1.metrics)

  val df2 = method(Obj2.className, Obj2.dimensions, Obj2.metrics)

  val df3 = method(Obj3.className, Obj3.dimensions, Obj3.metrics)

通过创建一个方法来传递一个对象列表,这些对象在对象中调用特定的val。

我尝试写这个,但它不起作用。如何创建方法或重新设计,以便将对象传递给newMethod?

def newMethod(obj: Object) = {
  val df = method(obj.className, obj.dimensions, obj.metrics)
}

1 个答案:

答案 0 :(得分:1)

使用特征:

trait Obj {
  def className: String
  def dimensions: Array[String]
  def metrics: Array[String]
}

您的ObjX对象会实现object Obj1 extends Obj之类的特征,然后将newMethod的签名更改为def newMethod(obj: Obj)