之前變換ANORM(播放框架)值,我有我的代表域的情況下類:結合
case class MyModel(rawValue: String, transformedValue: String)
rawValue映射到數據庫中的值,正確分析和綁定。我正在嘗試的是將transformedValue
添加到我的模型中:該值僅僅是我對rawValue執行的任意轉換。它不會映射到數據庫/查詢中的任何數據。
我有一個解析器(前要添加transformedValue
),看起來像這樣:
val parser = {
get[String]("rawValue") map {
case rawValue => MyModel(rawValue)
}
}
由於MyModel
是immutible及其創建後我不能插入transformedValue
進去,哪些地方是最好的方法來做和添加這種轉換(例如添加專門的值到模型)最好不使用變量?
來自Java,我可能只是將getTransformedValue
獲得者添加到對rawValue屬性執行此轉換的域類。
謝謝。這看起來像我在看到這個之前發佈的解決方案。我喜歡使用'懶惰'的想法。你可以通過使用val而不是def來評論差異(就像我在解決方案中那樣)? – oym
'val'在定義時被評估;調用時會評估「def」。當第一次訪問時,會評估一個「懶惰的val」。請參閱http://stackoverflow.com/a/7484933/376366 –
有關何時使用lazy val而不是val的說明,請參閱已更新的答案。 –