Bu etkin kalıp kullanımı neden derlenmiyor?Bu aktif kalıp kullanımı neden derlenmiyor?
aşağıdaki bir hata alırsınız:
match cell1 cell2 with
| CellsAreDifferent -> isValueNeighbor cell1.X cell2.X
&& isValueNeighbor cell1.Y cell2.Y
| CellsAreSame -> false
burada:tür uyuşmazlığı. Bir Cell bekleniyor -> Seçenek < 'a' b> ancak Hücre verilen -> Hücre -> Seçenek tipi 'Choice < 'a' b>' türü eşleşmiyor 'Hücre -> Seçenek'
kod
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
Bu documentation başvurmak çalışıyordu.
gibi bir şey Yani F # sadece tek girişe uyan desen gerçekleştirebilir? –
Her desen eşleşmesi tek bir değer alır. Etkin bir model, eşleştirilecek tek bir değeri alır, ancak daha sonra başka parametreler de alabilir (yalnızca kısmi aktif modeller için). – TheQuickBrownFox