E1010

E1010#

这个模式未使用。这通常发生在模式匹配中,这个模式完全被前一个模式覆盖。

MoonBit 中的模式匹配是按顺序执行的,从第一个分支到最后一个。如果一个模式被前一个模式覆盖,它将永远不会被执行,因为所有的控制流都将被定向到第一个匹配的分支。

错误示例#

fn main {
  match Some(1) {
    _ => println("_")
    Some(a) => println("Some(\{a})") // Warning: Unused pattern
  }
}

建议#

这个警告通常可以通过交换模式匹配中分支的顺序来修复。如果分支的顺序很重要,那么你可能希望完善第一个模式,使其排除第二个模式覆盖的内容。

fn main {
  match Some(1) {
    Some(a) => println("Some(\{a})")
    _ => println("_")
  }
}

或者,

fn main {
  match Some(1) {
    None => println("_")
    Some(a) => println("Some(\{a})")
  }
}