【在主画面加入捷径】
       
【选择语系】
繁中 简中

Nim 语言程序教学:枚举 (Enum)

【赞助商连结】

    枚举 (enum 或 enumeration) 是一种特化的类型,该类型的值仅有少数几个值,像是星期 (week) 只有星期一到星期日共七个值,而月份 (month) 仅有一月到十二月共 12 个值。在一些没有枚举的语言,像是 Go 或 Perl,使用常数来代替枚举;但使用枚举较好,因为编辑器可透过枚举进行类型检查,而常数没有类型安全的优点。

    以下实例建立一个 Size 枚举:

    type
      Size = enum
        szSmall, szMedium, szLarge, szXLarge, szXXLarge
    
    let s = szLarge
    assert(s == szLarge)
    

    由于 Nim 的枚举在调用时,不需要前缀类型资讯,像 Size.szSmall 这种调用会显得有点冗余,Nim 社群的习惯是在𣐀举前加一个前缀字。

    如果不习惯这种方式,也可以建立一个纯枚举 (pure enum),这时候就一定要用 Size.Small 这种方式来调用。实例如下:

    type
      Size {.pure.} = enum 
        Small, Medium, Large, XLarge, XXLarge
    
    let s = Size.Large
    assert(s == Size.Large)
    

    一般来说,我们在建立枚举时,不会在意其内部的值,而只是指枚举当成一种符号。若要指定枚举内部的值,Nim 也支援这项特性,如下:

    type
      MyEnum = enum
        a = 2, b = 4, c = 89
    
    【赞助商连结】