Enums 锈菌计数问题
我似乎无法让我的匹配表达式工作。看看它,它似乎和我看过的其他例子一样Enums 锈菌计数问题,enums,rust,pattern-matching,Enums,Rust,Pattern Matching,我似乎无法让我的匹配表达式工作。看看它,它似乎和我看过的其他例子一样 fn draw(board: BoardType) { let board = match board{ BoardType::B3x3(board, _) => board, BoardType::B4x4(board, _) => board }; } #[derive(Debug)] enum BoardType { B3x3([[Space; 3];
fn draw(board: BoardType) {
let board = match board{
BoardType::B3x3(board, _) => board,
BoardType::B4x4(board, _) => board
};
}
#[derive(Debug)]
enum BoardType {
B3x3([[Space; 3]; 3], (i8, i8)),
B4x4([[Space; 4]; 4], (i8, i8)),
}
#[derive(Copy, Clone, Debug)]
enum Space {
Blank,
X,
O,
Blocked,
}
BoardType::B4x4(板,)=>板
^^^^^需要一个固定大小为3个元素的数组,找到一个固定大小为4个元素的数组
我真的不明白为什么这不起作用。
match
表达式返回一个值。即使在此代码中未使用该值,编译器也需要对表达式进行类型检查。但是,表达式的两个分支有不同的类型:[[Space;3];3]
和[[Space;4];4]
错误消息告诉您,它希望第二个分支的类型与第一个分支的类型相同
问题的一部分可能是代码太简单,实际上什么都没做。假设您具有绘制这些电路板的功能:
fn draw_3x3(board: [[Space; 3]; 3]) {
unimplemented!()
}
fn draw_4x4(board: [[Space; 4]; 4]) {
unimplemented!()
}
然后,当您使用它们时,两个分支都将具有相同的类型(()
),因此整个表达式将进行类型检查:
fn draw(board: BoardType) {
let board = match board{
BoardType::B3x3(board, _) => draw_3x3(board),
BoardType::B4x4(board, _) => draw_4x4(board),
};
}
match
表达式返回一个值。即使在此代码中未使用该值,编译器也需要对表达式进行类型检查。但是,表达式的两个分支有不同的类型:[[Space;3];3]
和[[Space;4];4]
错误消息告诉您,它希望第二个分支的类型与第一个分支的类型相同
问题的一部分可能是代码太简单,实际上什么都没做。假设您具有绘制这些电路板的功能:
fn draw_3x3(board: [[Space; 3]; 3]) {
unimplemented!()
}
fn draw_4x4(board: [[Space; 4]; 4]) {
unimplemented!()
}
然后,当您使用它们时,两个分支都将具有相同的类型(()
),因此整个表达式将进行类型检查:
fn draw(board: BoardType) {
let board = match board{
BoardType::B3x3(board, _) => draw_3x3(board),
BoardType::B4x4(board, _) => draw_4x4(board),
};
}
你需要在某些方面进行匹配。它应该是
匹配板{…
也就是说,你仍然无法从你的两个火柴臂返回棋盘
,因为它们的类型不同。但那是另一次如果我理解正确,我可以用if-let语法单独处理每个棋盘?是的。但是我不确定你在draw
方法中的目标是什么,所以很难说我的最终目标是to制作一个Tic Tac Toe游戏,并使用minimax算法制作AI。我最终希望它能够处理3维,宽度为3和4。我认为枚举非常适合,因为有4种类型的电路板。现在我不太确定枚举是解决这个特殊问题的方法。打印方法应该只打印e控制台的当前状态。例如,“X | O | X”您需要在某些内容上进行匹配。它应该是匹配板{…
也就是说,你仍然无法从你的两个火柴臂返回棋盘
,因为它们的类型不同。但那是另一次如果我理解正确,我可以用if-let语法单独处理每个棋盘?是的。但是我不确定你在draw
方法中的目标是什么,所以很难说我的最终目标是to制作一个Tic Tac Toe游戏,并使用minimax算法制作AI。我最终希望它能够处理3维,宽度为3和4。我认为枚举非常适合,因为有4种类型的电路板。现在我不太确定枚举是解决这个特殊问题的方法。打印方法应该只打印e控制台的当前状态,例如“X | O | X”