MoonBit 语言导览 MoonBit

守卫条件

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))
}