我希望能够定义一个函数,该函数将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上找到这个问题所以我猜这可能不是我应该尝试做的事情。如果这是真的,那为什么会这样呢?
答案 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
中的模式匹配来选择字段。