Ich habe ein paar Objekte mit einer Funktion in jedem .Clean genannt erstellt:Scala ein Objekt aus einem variablen Namen zu nennen
HiveCleanerTbl
HiveCleanerDb
Diese Objekte müssen auf einem Datensatz auf einem API-Aufruf auf Basis dynamisch basierend aufgerufen werden wird gemacht, dass mein Job wissen lassen, welches Objekt zum Beispiel nennen ich habe es jetzt hart codiert:
def matchSchema(schema:Int): Any = schema match {
case 1 => HiveCleanerTbl.clean(rawRecord)
case 32 => HiveCleanerDb.clean(rawRecord)
...
im Code Früher stattdessen die möglichen Objekte hartzucodieren ist es eine Möglichkeit, dynamisch, das Objekt haben bevölkert wie :
val systems = List[(String, String, Int)] = List((hiveTbl,HiveTblCleaner,6), (hiveDb,HiveDbCleaner,7))
Und ich habe Code, der wie folgt aussieht:
systems.foreach(x => if(x._1 == systemName) {
cleanObject = x._2
})
Wie werde ich die Clean machen als das Objekt definiert Ich möchte, dass verwenden kann seine .Clean Funktion aufrufen?
Was wäre, wenn Sie ein anderes Objekt erstellen würden, das alle anderen Objekte kennt und die Funktion enthält, von der ich denke, dass sie systemName übernehmen und den zu verwendenden Reiniger bestimmen würde? Ohne mehr über Ihr Design zu wissen, weiß ich nicht, ob Sie alle anderen Objekte in einem einkapseln könnten, aber das könnte eine Möglichkeit sein. Du könntest vielleicht auch die anderen Objekte loswerden und diese Funktion haben, die im systemName eine Funktion zum 'clean' zurückgibt? Wiederum schwer zu sagen ohne mehr Wissen – Barry