ブール値の比較に依存する関数を作成し、「iflet」構文を使用して列挙型の型をチェックしています。私が以下に持っているものよりもきれいな方法はありますか?
fn is_mine(&self, row: i32, col: i32) -> bool {
if self.bounds.is_in_bounds(row, col) {
if let MineCell::Mine = self.field[row as usize][col as usize] {
return true;
}
}
false
}
これは機能しますが、 'if'ブロック内の唯一のステートメントとしてtrue / falseを返すことにより、汚れた感じがします。私の場合、.is_in_bounds()
メンバーのブール比較を最初に実行するif let
必要があり、次に列挙型のタイプのチェックを安全に実行できます。
これは技術的には正しいですが、これを行うにはもっと慣用的な方法が必要だと思います。if let
ステートメントを適切にスタックする方法についての投稿をここや他の場所で見ましたが、ブール比較とif let
比較の混合については何もありません。
上記のコードの正しいが醜い形式を受け入れる必要がありますか?
列挙型が実装されている場合PartialEq
、これも機能するはずです。
fn is_mine(&self, row: i32, col: i32) -> bool {
self.bounds.is_in_bounds(row, col)
&& self.field[row as usize][col as usize] == MineCell::Mine
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加