varsayalım Aşağıdaki kod var:Eksik desen eşlemesini filtre olarak kullanmak mı?
type Vehicle =
| Car of string * int
| Bike of string
let xs = [ Car("family", 8); Bike("racing"); Car("sports", 2); Bike("chopper") ]
ben gibi döngü için bir zorunluluk eksik desen eşleştirme kullanarak listenin üzerindeki filtreleyebilirsiniz:
> for Car(kind, _) in xs do
> printfn "found %s" kind;;
found family
found sports
val it : unit =()
ama bir neden olur: warning FS0025: Incomplete pattern matches on this expression. For example, the value 'Bike (_)' may indicate a case not covered by the pattern(s). Unmatched elements will be ignored.
Eşsiz öğelerin göz ardı edilmesi niyetim olduğu için, bu uyarıdan kurtulmak için bir olasılık var mı?
Ve bu çalışmayı bir MatchFailureException oluşturmadan liste-anlamalarıyla yapmanın bir yolu var mı? Örneğin. Böyle bir şey:
> [for Car(_, seats) in xs -> seats] |> List.sum;;
val it : int = 10
Bence bu hat şu şekilde olurdu: [xs -> koltuklar] 'da Bus (_, koltuklar) için |> List.sum ;; Sağ? ;) –
Oh anladım! 2 araba! 5 x 2 = 10! Tanrım, yardım et bana. –
Bu bir aile arabası ve spor araba, yani 8 + 2 = 10. – Laurent