守卫条件
在 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))
}