【发布时间】:2020-01-11 10:01:22
【问题描述】:
我似乎无法让我的匹配表达式工作。看了一下,好像和我看过的其他例子一样。
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(board,_) => board
^^^^^ expected an array with a fixed size of 3 elements, found one with 4 elements
我真的不明白为什么这不起作用。
【问题讨论】:
-
你需要匹配 something。应该是
match board { ... -
也就是说,你仍然不能从你的两个匹配臂返回
board,因为它们是不同的类型。但那是另一次了 -
如果我理解正确的话,我可以用 if let 语法单独处理每一个?
-
是的。但是我不确定你在
draw方法中的目标是什么,所以很难说 -
我的最终目标是制作一款井字游戏并使用极小极大算法来制作人工智能。我最终希望它能够处理 3 个维度,宽度为 3 和 4。我认为枚举会很合适,因为有 4 种类型的板。现在我不太确定枚举是解决这个特定问题的方法。 print 方法只是应该将当前状态打印到控制台。例如。 “X|O|X”
标签: enums rust pattern-matching