Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Nim lang Nim中的字符串枚举类型?_Nim Lang - Fatal编程技术网

Nim lang Nim中的字符串枚举类型?

Nim lang Nim中的字符串枚举类型?,nim-lang,Nim Lang,是否可以为字符串定义类似枚举的类型?我知道枚举,但不想在这种情况下使用枚举,我想把它当作一个字符串来使用 type Blog = object text: string priority: "low" | "normal" | "high" echo Blog(text: "something...", priority: "high") 枚举可以附加一个字符串值。转换器可用于

是否可以为字符串定义类似枚举的类型?我知道枚举,但不想在这种情况下使用枚举,我想把它当作一个字符串来使用

type Blog = object
  text:     string
  priority: "low" | "normal" | "high"

echo Blog(text: "something...", priority: "high")

枚举可以附加一个字符串值。转换器可用于将字符串自动解析为枚举。示例():

输出:

(text: "something...", priority: high)
(text: "something...", priority: low)
invalid enum value: medium
类型定义和转换器可能在宏中实现自动化,例如:

stringEnum:
  Priority = ["low", "medium", high"]

作为读者的练习,实现宏left:)

谢谢,这解决了我的问题,我不知道该功能!不过有一个警告:据我所知,nim中的枚举实际上只存储为序数,它们的字符串表示形式只能用于priniting。在本例中,完成了相反的操作,但无法将Priority.pLow发送到需要字符串的proc,这就是为什么这里需要转换器,但有点违背枚举的目的。。。
stringEnum:
  Priority = ["low", "medium", high"]