首页 > 解决方案 > 为什么我需要 Scala 枚举

问题描述

通过使用 Scala 的 Enum 而不是不使用它,我将获得什么确切的好处。

object Colours extends Enumeration {
  val Red, Blue, Green = Value
}

为什么我不能将其用作:

 object Colours{
      val Red = "Red"
      val Blue = "Blue" 
      val Green = "Green"
}

我同意它有点冗长,但是每当我必须使用它时,我都不必执行 toString。有没有更好的理由使用枚举?我的问题是:1)我们应该仅仅因为它是一种好习惯就使用枚举吗?2)是否有任何性能考虑?

标签: scalaenums

解决方案


  1. 真正的问题是“为什么这是一个好习惯?”。使用类型系统时,您可以减少出现错误代码的可能性。您可以防止以下错误:

    showColor("green") // wrong casing
    
    color match {
      case "Green" => // 
      case "Pink" => // invalid color
    } // match didn't include all possibilities (exhaustiveness)
    

    当然,你总是可以使用你定义的 val 来代替文字字符串,但是没有类型就没有任何强制措施。

  2. 性能方面 - 除非它处于某个紧密的循环中,否则可能不会有很大的不同


推荐阅读