我有一個在每一個所謂的清潔機殼函數創建幾個對象:斯卡拉調用從變量名對象
HiveCleanerTbl
HiveCleanerDb
這些對象需要基於基於API調用記錄動態調用正在取得會讓我的工作知道叫什麼對象比如我有硬編碼現在:
def matchSchema(schema:Int): Any = schema match {
case 1 => HiveCleanerTbl.clean(rawRecord)
case 32 => HiveCleanerDb.clean(rawRecord)
...
的代碼,而不是硬編碼的可能的對象早些時候,有沒有辦法來動態有填充像對象:
val systems = List[(String, String, Int)] = List((hiveTbl,HiveTblCleaner,6), (hiveDb,HiveDbCleaner,7))
而且我的代碼看起來像這樣:
systems.foreach(x => if(x._1 == systemName) {
cleanObject = x._2
})
我怎麼會讓定義我想用,可以調用它的清潔機殼函數對象的cleanObject?
如果你讓另一個知道所有其他對象的對象包含了我認爲需要systemName並確定使用哪個清理器的函數?不知道更多關於你的設計,我不知道你是否可以將所有其他對象封裝在一箇中,但這可能是一種可能性。你也可以擺脫其他對象,並讓這個函數在systemName中返回一個函數'clean'?再次,沒有更多的知識很難說 – Barry