我最近开始使用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)
}
答案 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)
。