Мне нужна функция вроде Seq.head
, но возвращающая None
вместо выдачи исключения, когда последовательность пуста, то есть seq ->' T вариант
.
Есть миллионы способов сделать это. Вот несколько:
let items = Seq.init 10 id
let a = Seq.tryFind (fun _ -> true) items
let b = Seq.tryPick Some items
let c = if Seq.isEmpty items then None else Some (Seq.head items)
let d =
use e = items.GetEnumerator()
if e.MoveNext() then Some e.Current
else None
b
- это тот, который я использую. Два вопроса:
Seq.tryHead
, означает ли это, что в этом нет необходимости, это редкость или лучше реализовать без функции? tryHead
был добавлен в стандартную библиотеку в F # 4.0 .