📜  Scala中的枚举

📅  最后修改于: 2021-05-20 06:41:42             🧑  作者: Mango

枚举用于以编程语言表示一组命名常量的目的。有关枚举的信息,请参见C中的枚举(或枚举)和Java中的枚举。 Scala提供了一个Enumeration类,我们可以对其进行扩展以创建我们的枚举。

Scala中的枚举声明

// A simple scala program of enumeration 
  
// Creating enumeration
object Main extends Enumeration 
{
    type Main = Value
      
    // Assigning values
    val first = Value("Thriller")
    val second = Value("Horror")
    val third = Value("Comedy")
    val fourth = Value("Romance")
      
    // Main method
    def main(args: Array[String])
    {
        println(s"Main Movie Genres = ${Main.values}")
    }
}
输出:
Main Movie Genres = Movies.ValueSet(Thriller, Horror, Comedy, Romance)

枚举的重点:

  • 在Scala中,没有像Java或C那样的enum关键字。
  • Scala提供了一个Enumeration类,我们可以对其进行扩展以创建我们的枚举。
  • 每个枚举常量都代表一个枚举类型的对象
  • 枚举值定义为评估的val成员。
  • 当我们扩展Enumeration类时,很多函数都被继承了。 ID是其中之一。
  • 我们可以迭代成员。

打印枚举的特定元素

// Scala program Printing particular 
// element of the enumeration
  
// Creating enumeration
object Main extends Enumeration 
{
    type Main = Value
      
    // Assigning values 
    val first = Value("Thriller")
    val second = Value("Horror")
    val third = Value("Comedy")
    val fourth = Value("Romance")
       
    // Mian method 
    def main(args: Array[String]) 
    {
        println(s"The third value = ${Main.third}")
    }
}
输出:
The third value = Comedy

在上面的示例中,Main.third是打印枚举的特定元素。

打印枚举中任何元素的默认ID

// Scala program Printing default ID of 
// any element in the enumeration
  
// Creating Enumeration
object Main extends Enumeration 
{
    type Main = Value
   
    // Assigning Values
    val first = Value("Thriller") // ID = 0
    val second = Value("Horror") // ID = 1
    val third = Value("Comedy") // ID = 2
    val fourth = Value("Romance") // ID = 3
       
    // Main Method 
    def main(args: Array[String]) 
    {
        println(s"ID of third = ${Main.third.id}")
    }
}
输出:
ID of third = 2

在上面的示例中,Main.third.id是打印枚举中任何元素的默认ID。

匹配枚举中的值

// Scala program of Matching values in enumeration
  
// Creating Enumeration
object Main extends Enumeration 
{
    type Main = Value
      
    // Assigning Values
    val first = Value("Thriller")
    val second = Value("Horror")
    val third = Value("Comedy")
    val fourth = Value("Romance")
      
    // Main Method 
    def main(args: Array[String]) 
    {
        Main.values.foreach
        {
            // Matching values in Enumeration
            case d if ( d == Main.third ) => 
            println(s"Favourite type of Movie = $d")
            case _ => None
        } 
    }
}
输出:
Favourite type of Movie = Comedy

更改值的默认ID

这些值按照我们设置的ID的顺序打印。这些ID的值可以是任何整数。这些ID不必以任何特定的顺序排列。

// Scala program of Changing
// default IDs of values
  
// Creating Enumeration
object Main extends Enumeration 
{
    type Main = Value
  
    // Assigning Values
    val first = Value(0, "Thriller")
    val second = Value(-1, "Horror")
    val third = Value(-3, "Comedy")
    val fourth = Value(4, "Romance") 
      
    // Main Method 
    def main(args: Array[String]) 
    {
        println(s" Movie Genres = ${Main.values}")
    }
}
输出:
Movie Genres = Movies.ValueSet(Comedy, Horror, Thriller, Romance)

参考: https : //www.scala-lang.org/api/current/scala/Enumeration.html