2017-06-11 32 views
-1

我有一个对象阶重命名情况下类属性动态

object Helper{ 
val fieldName = "fooBar 
} 

这对于一个字段提供的名称。 和壳体类

case class BarBaz(fieldOne:Int, fieldTwo:String) 

但不是fieldTwo,我想是指Helper.fieldname为案件类的参数名称。

这怎么能在斯卡拉完成?也许通过宏?还是有更简单的可能性? 也就是说

case class BarBaz(fieldOne:Int, Helper.fieldName:String) 

将是所需的输出,但不会编译。

+0

调用BarBaz.fieldTwo或Helper.fieldName,它们不是一样吗?你必须创建两者的实例。你不能改变案例类的字段名称吗? –

+0

我希望能够通过修改val'fieldName'来更改案例类的字段名称。请参阅编辑。 –

+0

不确定你想在这里完成什么,但是'Map [String,?]'可能是通过“动态标识符”访问事物的一种更简单的方法。 – rethab

回答

1

我不认为它可能作为定义变量意味着指向存储值的存储位置。因此compiler将变量名称视为内存位置地址,而不是存储在该位置的值,并且不允许使用变量名称的内存位置。

+0

但是,它可以通过宏转换为编译时问题吗? –

相关问题