E0095#
警告名称:nan_pattern
模式使用了值为 NaN(非数)的浮点常量。NaN 不等于任何值,包括它自身,因此此模式永远无法匹配。此警告默认启用。
错误示例#
///|
const Infinity : Double = 1.0e308 * 1.0e308
///|
const NaN : Double = Infinity - Infinity
///|
pub fn describe(value : Double) -> String {
match value {
NaN => "not a number"
_ => "number"
}
}
即使 value 是 NaN,也不会选择 NaN 分支。
建议#
请在匹配分支的守卫条件中调用 is_nan(),而不是使用 NaN 常量进行匹配:
///|
pub fn describe(value : Double) -> String {
match value {
x if x.is_nan() => "not a number"
_ => "number"
}
}
///|
test {
inspect(describe(0.0 / 0.0), content="not a number")
inspect(describe(1.0), content="number")
}