Определение того, не работает ли IE7 или более ранняя версия с условными комментариями и javascript

Предположим, у меня есть следующий код:

type Vehicle =
| Car  of string * int
| Bike of string

let xs = [ Car("family", 8); Bike("racing"); Car("sports", 2); Bike("chopper") ]

Я могу отфильтровать приведенный выше список, используя неполное сопоставление с образцом в императивном цикле for, например:

> for Car(kind, _) in xs do
>    printfn "found %s" kind;;

found family
found sports
val it : unit = ()

, но он будет вызвать предупреждение: FS0025: Неполный шаблон соответствует этому выражению. Например, значение «Велосипед (_)» может указывать на случай, не охваченный шаблоном (ами). Несовпадающие элементы будут проигнорированы.

Поскольку я намерен игнорировать несогласованные элементы, есть ли возможность избавиться от этого предупреждения?

И есть ли способ заставить эту работу работать со списком без исключения MatchFailureException ? например, что-то вроде этого:

> [for Car(_, seats) in xs -> seats] |> List.sum;;
val it : int = 10
5
задан Alexander Battisti 12 April 2011 в 08:47
поделиться