2
なぜこのアクティブパターンの使用法はコンパイルされませんか?このアクティブパターンの使用法がコンパイルされないのはなぜですか?
match cell1 cell2 with
| CellsAreDifferent -> isValueNeighbor cell1.X cell2.X
&& isValueNeighbor cell1.Y cell2.Y
| CellsAreSame -> false
型の不一致:
は、私は次のようにエラーが表示されます。 B ''>選択<>が、 セルを与えられた - - セルを期待して>セル - > Choiceの種類チョイス< '' B> '型 'セルを - >選択' と一致しません
コードはここにある:
let (|CellsAreSame|CellsAreDifferent|) cell1 cell2 =
match cell1.X <> cell2.X
|| cell1.Y <> cell2.Y with
| true -> CellsAreDifferent
| false -> CellsAreSame
let isNeighbor cell1 cell2 =
let isAbsNeighbor v1 v2 =
match abs (v1 - v2) with
| 0 | 1 -> true
| _ -> false
let isValueNeighbor v1 v2 =
match v1 >= 0
&& v2 >= 0 with
| true -> isAbsNeighbor v1 v2
| _ -> isAbsNeighbor v2 v1
match cell1 cell2 with
| CellsAreDifferent -> isValueNeighbor cell1.X cell2.X
&& isValueNeighbor cell1.Y cell2.Y
| CellsAreSame -> false
私はこのdocumentationを参照しようとしました。
のようなものだからF#が単一の入力だけでパターンマッチングを行うことができますか? –
各パターンマッチは単一の値をとります。アクティブなパターンは、一致する単一の値をとりますが、さらにパラメータを取ることもできます(部分的なアクティブなパターンの場合のみです)。 – TheQuickBrownFox