scala - 根据命令行参数的值导入 Scala 对象
问题描述
可以说我有以下结构:
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
.
感谢任何/所有输入..
解决方案
确保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()
}
推荐阅读
- vue.js - 打开 Vuetify 对话框时的运行方法
- scala - 使用链接函数继承类
- excel - 如何插入条件“如果包含”以在 VBA 中搜索特定字母?
- javascript - 根据输入类型隐藏/显示=文件值
- codeigniter - 对于某些用户来说,使用 JWT 作为参数的 Codeigniter 路由无法按预期工作
- php - laravel 从特定路径生成假图像
- python - Pandas 合并 TypeError:“NoneType”类型的对象没有 len()
- python - 嵌套for循环python pandas无法按预期运行
- vue.js - 无法在 matrix-js-sdk 中加密消息
- gitlab - 如何在公共 GitLab 存储库中保持文件私有?