Я хочу проверить, есть ли в последовательности элемент определенного различного объединения, и если он существует, я хочу вернуть этот конкретный элемент.
type Shape =
| Rectangle of float * float
| Circle
| Prism
let rectangle1 = Rectangle(5.0,1.2)
let rectangle2 = Rectangle(2.0,1.4)
let test = [Circle;Prism;rectangle2;rectangle1]
let getShape shape =
match shape with
| Rectangle(a,b) -> Some(a)
| _ -> None
let x =
if test |> List.exists (fun shape -> (getShape shape) = Some(1.0)) then
???
elif test|> List.exists (fun shapre -> shape = Circle) then
Circle
else
Prism
Для приведенного выше кода я хочу иметь возможность проверить, существует ли форма прямоугольника с первым элементом кортежа, равным 1,0
Эта проверка работает: test |> List.exists (fun shape -> (getShape shape) = Some(1.0))
Однако я не знаю, как вернуть «форму», найденную из этого выражения.
Я хочу это для последовательности, но в приведенном выше примере используется список. Я думаю, это также будет применяться к последовательности.