先给一个能编译运行的例子, 后续在这个基础上进行修改:
enum 测试枚举 {
None
Some(String)
}
func to_string(self: 测试枚举) -> String {
match self {
测试枚举::None => "None"
测试枚举::Some(t) => "Some(\(t))"
}
}
func init {
let a = 测试枚举::None
let b = 测试枚举::Some("test")
"\(a)\n".print()
"\(b)\n".print()
}
运行输出:
None
Some(test)
修改 1
如果直接这样修改:
enum 测试枚举 {
无
有(String)
}
则编译错误:
[{
"resource": "/sample-folder/001_hello.mbt",
"owner": "_generated_diagnostic_collection_name_#0",
"severity": 8,
"message": "Parse error,unexpected token `identifier` , you may expect identifier or `}`",
"startLineNumber": 2,
"startColumn": 3,
"endLineNumber": 2,
"endColumn": 4
}]
修改 2
在语法里面说了, 枚举项必须以大写字母开头, 那么这样修改:
enum 测试枚举 {
E无
E有(String)
}
func to_string(self: 测试枚举) -> String {
match self {
测试枚举::E无 => "None"
测试枚举::E有(t) => "Some(\(t))"
}
}
那么第一个编译错误是:
[{
"resource": "/sample-folder/001_hello.mbt",
"owner": "_generated_diagnostic_collection_name_#0",
"severity": 8,
"message": "Parse error,unexpected token `identifier` , you may expect `(` or `=>` or `as`",
"startLineNumber": 8,
"startColumn": 12,
"endLineNumber": 8,
"endColumn": 13
}]
看起来这里是没问题的:
enum 测试枚举 {
E无
E有(String)
}
但是使用的时候就报错了:
match self {
测试枚举::E无 => "None"