我有一个在每一个所谓的清洁机壳函数创建几个对象:斯卡拉调用从变量名对象
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