Scala没有enum像Java那样的类型安全.给定一组相关常量,Scala表示这些常量的最佳方法是什么?
是否有关于何时使用案例类(或案例对象)与在Scala中扩展Enumeration的最佳实践指南?
他们似乎提供了一些相同的好处.
我只是想知道是否有可能在Scala中迭代密封的特征?如果没有,为什么不可能?由于特性是密封的,应该可以吗?
我想做的是这样的:
sealed trait ResizedImageKey {
/**
* Get the dimensions to use on the resized image associated with this key
*/
def getDimension(originalDimension: Dimension): Dimension
}
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)
}
Run Code Online (Sandbox Code Playgroud)
通过给枚举值赋予实现,我可以用Java完成.Scala中有同等的东西吗?
我在SO上读到了一个答案,其中有人说scala枚举是无用的,如果你真的需要,你应该只使用java枚举.
虽然我之前使用过java枚举,但我不能说我完全理解它们,因为我在日常工作中不用java编码.
有人可以解释scala和java枚举之间的区别,以及scala枚举中的缺点究竟在哪里?