這個問題是有關第一個: Iteration over a sealed trait in Scala?枚舉 - >具有「值」的密封特徵?
我有以下特點密封
/**
* @author Sebastien Lorber (<i>[email protected]</i>)
* Date: 02/12/12 - Time: 17:49
*/
sealed trait ResizedImageKey {
/**
* Get the dimensions to use on the resized image associated with this key
*/
def getDimension(originalDimension: Dimension): Dimension
}
object ResizedImageKey {
val ALL_KEYS: List[ResizedImageKey] = List(Large,Medium,Small,X2)
}
case class Dimension(width: Int, height: Int)
case object Large extends ResizedImageKey {
def getDimension(originalDimension: Dimension) = Dimension(1000,1000)
}
case object Medium extends ResizedImageKey{
def getDimension(originalDimension: Dimension) = Dimension(500,500)
}
case object Small extends ResizedImageKey{
def getDimension(originalDimension: Dimension) = Dimension(100,100)
}
case object X2 extends ResizedImageKey{
def getDimension(originalDimension: Dimension) = Dimension(
width = originalDimension.width * 2,
height = originalDimension.height * 2
)
}
這現在工作得很好。 問題是我需要能夠使用我的ResizedImageKey作爲將存儲在MongoDB和Salat中的地圖的關鍵字。
我不認爲薩拉特支持「密封特質轉換」對嗎? 所以我應該移動到枚舉,這迫使我做尺寸計算匹配/情況?或者有什麼已知的解決方案來解決這個問題? 是否有可能創建枚舉值對象而不擴展枚舉或什麼?
謝謝
你確實得到了一個「匹配並不詳盡......」的警告,因爲這個特徵是密封的。 – yakshaver