Функция Array.contains
принимает значение и проверяет, есть ли это значение в массиве. То, что вы пытаетесь сделать, это дать целую кучу значений для проверки. Ну, это не сработает: функция берет только один. И не помогает то, что в F # такого синтаксиса нет: -)
Вы можете использовать другую функцию, которая принимает несколько значений, но лучший способ выполнить то, что вы хотите, это использовать функцию, которая принимает предикат - Array.exists
. Сделайте себе предикат, чтобы проверить, является ли значение «недействительным»:
let isInvalid x = match x with
| Valid -> false
| Invalid _ -> true
И передать его Array.exists
:
let validateStuff result =
validators
|> Array.map(fun v -> v result)
|> Array.exists isInvalid
Или вы могли бы даже поместить эту функцию в строку:
let validateStuff result =
validators
|> Array.map(fun v -> v result)
|> Array.exists ( fun x -> match x with
| Valid -> false
| Invalid _ -> true )
Или еще короче, используя ключевое слово function
:
let validateStuff result =
validators
|> Array.map(fun v -> v result)
|> Array.exists ( function | Valid -> false | Invalid _ -> true )
Или даже короче, избавляясь от максимально возможного шума:
let validateStuff result =
validators
|> Array.map(fun v -> v result)
|> Array.exists ( function Invalid _ -> true | _ -> false )