2017-06-11 68 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

但是,它可以通過宏轉換爲編譯時問題嗎? –

相關問題