E0007#
字段从未被读取。这包括结构体中的字段和枚举构造器中的字段。
错误示例#
///|
priv enum E {
A(Int)
B(value~ : Int)
}
///|
priv struct S {
value : Int
}
///|
test {
ignore(B(value=1))
match A(1) {
A(_) => println("A")
B(_) => println("B")
}
ignore(S::{ value : 1 })
}
建议#
如果枚举构造器中的字段未使用,你可以在模式中展开它们以使用它们:
///| priv enum E { A(Int) B(value~ : Int) } ///| priv struct S { value : Int } ///| test { ignore(B(value=1)) match A(1) { A(x) => inspect("A(\{x})", content="A(1)") B(value~) => inspect("B(\{value})") } let s = S::{ value: 1 } match s { { value } => println("S(\{value})") } println("S(\{s.value})") }
如果字段确实没有用,你可以从构造器中移除字段:
///| priv enum E2 { A2 B2 } ///| priv struct S2 {} ///| test { ignore(E2::B2) match E2::A2 { A2 => println("A") B2 => println("B") } ignore(S2::{ }) }
如果字段预计会被其他人使用,你可以将类型标记为
pub
或pub(all)
。///| pub enum E3 { A3(Int) B3(value~ : Int) } ///| pub struct S3 { value : Int }