可以说我具有以下结构:
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.scala
或param
中使用定义。
赞赏任何/所有输入。
答案 0 :(得分:3)
确保One
和Two
共享一些公共接口,在运行时选择该接口的实例,然后导入该实例的成员:
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()
}