守卫条件
在 match 表达式中,你可以使用 if 关键字为=>左侧的模式添加额外的条件。这个功能称为守卫条件。守卫条件允许你通过添加必须为 true 的布尔表达式来细化匹配过程。
在函数 validate 中,我们使用守卫条件来确保选项中的字符串不为空:
-
如果选项是
Some(path)且path不是空字符串,match表达式的结果为true。 -
如果选项是
Some(path)但path是空字符串,模式守卫失败,会匹配第二个使用通配符模式_的分支。match表达式的结果为false。 -
如果选项是
None,会匹配通配符模式_,match表达式的结果为false。
///|
fn validate(path : String?) -> Bool {
match path {
Some(path) if path != "" => true
_ => false
}
}
///|
fn main {
let path1 = Some("/home/config")
let path2 = Some("")
let path3 = None
println(validate(path1))
println(validate(path2))
println(validate(path3))
}