根据命令行参数值导入Scala对象

时间:2019-06-06 10:50:40

标签: scala import

可以说我具有以下结构:

src
 - main 
  - scala
   - model
     - One.scala 
     - Two.scala
   - main
     - Test.scala

Test.scala扩展App并接受一个参数:

object Test extends App {

val param: String = args.head  

// Based on param, I want to use either One or Two?

}
// sbt run Two

如何根据One.scala的运行时值在Two.scalaparam中使用定义。

赞赏任何/所有输入。

1 个答案:

答案 0 :(得分:3)

确保OneTwo共享一些公共接口,在运行时选择该接口的实例,然后导入该实例的成员:

trait CommonInterface {
  def foo(): Unit
}

object One extends CommonInterface { def foo() = println("1") }
object Two extends CommonInterface { def foo() = println("2") }

object Main extends App {
  // check args etc...
  val ci = if (args(0) == "one") One else Two
  import ci._
  // do something with `foo` here
  foo()
}