Я хочу создать функцию F #, такую как List.find, но вместо того, чтобы искать одно значение, я хочу найти любой из ключей словарь и вернуть соответствующее значение словаря. Например, это (бедная) реализация того, что я пытаюсь сделать.F # - Функция типа List.find, но поиск любого из ключей словаря
let dict1=dict[(1,"A");(2,"B");(3,"C");(4,"D");(5,"E");(6,"F")]
let findInDict l =
let mutable found=false
let mutable value=""
for elem in l do
let f,v=dict1.TryGetValue(elem)
value<-if f && not found then v else value
found<-if not found then f else found
value
findInDict [9;2;5]
>
val dict1 : System.Collections.Generic.IDictionary<int,string>
val findInDict : l:seq<int> -> string
val it : string = "B"
Что было бы функциональным эквивалентом?
tryPick - это именно то, что я искал. Почувствуйте глупость, чтобы не заметить эту функцию. – dood
@ user3058579, похоже, другие ответчики тоже. ;-) – mydogisbox
FYI - последнее решение получает доступ к словарю дважды за каждый успешный ключ. Лучше использовать TryGetValue(). – plinth