假设我有这个功能:
match symbol {
letter @ 'a'..'z' => Token { ... },
digit @ '0'..'9' => Token { ... },
whitespace @ ['\r', '\t', '\n'] => Token {...}
}
Run Code Online (Sandbox Code Playgroud)
这显然不起作用.有没有办法whitespace
使用类似的构造,而不是像这样写:
match symbol {
letter @ 'a'..'z' => Token { ... },
digit @ '0'..'9' => Token { ... },
'\r' => Token {...},
'\n' => Token {...},
'\r' => Token {...},
}
Run Code Online (Sandbox Code Playgroud)
您可以使用pipe(|
)运算符组合模式:
match symbol {
letter @ 'a'..'z' => Token { ... },
digit @ '0'..'9' => Token { ... },
'\r' | '\t' | '\n' => Token {...}
}
Run Code Online (Sandbox Code Playgroud)
但绑定匹配变量是丑陋的:
match symbol {
letter @ 'a'..'z' => Token { ... },
digit @ '0'..'9' => Token { ... },
ws @ '\r' | ws @ '\t' | ws @ '\n' => Token {...}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
449 次 |
最近记录: |