使用val获取案例类字段值

时间:2016-08-29 23:54:36

标签: scala

我希望能够定义一个函数,该函数将case类字段 name 作为参数并使用该字段的值。请考虑以下代码:

case class Clock(hour: Int, minute: Int)

val clock = Clock(3, 55)
val field = "hour"
val hour = clock.field             //doesn't work

scala中有没有办法实现此代码尝试的功能?我无法在S / O上找到这个问题所以我猜这可能不是我应该尝试做的事情。如果这是真的,那为什么会这样呢?

2 个答案:

答案 0 :(得分:1)

使用一些基本的文本编辑/宏,您可以引入一个功能,如

PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
Resource[] resources = resolver.getResources("classpath:*.json");

我的scala不够强大,不足以让它变得漂亮,但任何允许使用宏的文本编辑器都应该让它们更容易生成。

答案 1 :(得分:0)

您可以尝试在此处使用Dynamic。请考虑以下示例:

class Clock extends Dynamic {
  def selectDynamic(field: String) = field
}

scala> val clock = new Clock
clock: Clock = Clock@6040af64

scala> clock.foo
res37: String = foo

scala> clock.selectDynamic("foo")
res38: String = foo

因此,您可以使用selectDynamic中的模式匹配来选择字段。

相关问题