【发布时间】:2017-03-31 05:47:46
【问题描述】:
我是 scala 的新手,我需要一个结构,我可以在其中轻松添加新的个人可访问常量并遍历所有常量。 像这样的:
object Constants {
val A = Something(...)
val B = Something(...)
val C = Something(...)
// ...
val listOfConstants = (A, B, C, ...)
}
但无需手动将常量添加到列表中。 我考虑了一个 Map 但这会使访问常量变得更加困难 我最终写了这个:
def getElements[T : ClassTag](c : Any) : Set[T] = {
var result : Set[T] = Set()
for (field <- c.getClass.getDeclaredFields) {
field.setAccessible(true)
field.get(c) match {
case t: T => result += t
case _ =>
}
}
result
}
然后对这样的结构使用以下行
val listOfConstants = getElements[Something](Constants)
这是一个肮脏的解决方案吗?有更好的选择吗?
【问题讨论】:
标签: scala