迭代导入的scala类

时间:2018-01-13 13:21:02

标签: scala import iteration

  • 我的scala程序将在命令行上传递一个数字ID列表
  • 我有一个包含~500个类的包,其中每个类都有一个数字ID
  • 我只想使用那些在命令行上传递ID的类
  • 我想这样做而不写出所有~500个班级的名字

例如目录

MyClasses
  - _001_first
  - _002_second
  - _003_third

每个班级都像......

class _001_first {val id = 1}

我正在寻找......好像

import MyClasses._

object Main extends App {
  val instances = for (
    MyClasses <- Class // I believe this is the problem line
    inst = Class()
    if args.contains(inst.id)
  ) yield inst
}

这可能吗?如果是这样,有没有人知道为什么它不可能背后的设计决定?欢迎提出完全不同的设计建议

上下文

我正在编写一个测试框架。每个测试用例都在一个单独的文件中,我希望能够在命令行中指定要运行的测试用例。

1 个答案:

答案 0 :(得分:1)

你的用例看起来很奇怪(你想解释大局吗?),但是你可以使用反射来通过它的名称在运行时获取类并搜索属性。

使用声明方法的公共特征也可能有用(例如,每个类都会实现

trait X {

 def id: Int

}