E3018

E3018#

范围模式的边界必须是常数字面量、常量或通配符。

错误示例#

fn main {
  let a = 3
  match 0 {
    0..<a => println("Between 0 and 3") // Error: Bounds of range pattern must be constant, named constant or wildcard.
    _ => println("Not between 0 and 3")
  }
}

建议#

你可以将变量 a 改为一个常量:

const A = 3
fn main {
  match 0 {
    0..<A => println("Between 0 and 3")
    _ => println("Not between 0 and 3")
  }
}

或者,你可以直接使用常数字面量:

fn main {
  match 0 {
    0..<3 => println("Between 0 and 3")
    _ => println("Not between 0 and 3")
  }
}

或者,你可以使用一个通配符:

fn main {
  let a = 3
  match 0 {
    0..<_ => println("Big than or equal to 0")
    _ => println("Less than 0")
  }
}

注意:使用通配符会改变这个范围模式的含义。