такого выглядит довольно вербозно
type Foo = { id: int; bar: string }
let arr: Foo[] = [|
{id = 1; bar = "fst"}
{id = 2; bar = "snd"}
{id = 3; bar = "thd"}
|]
let arr2 = arr
|> Array.map (fun x -> if x.bar = "snd" then {x with bar = "blah"} else x)
А как бы хотелось?
Покороче 🤷♂️
Только вынести в функцию отдельную
Но с такой же семантикой?
в F# 6 есть updateAt для Seq \ Array \ List, но там по индексу только https://fsharp.github.io/fsharp-core-docs/reference/fsharp-collections-listmodule.html#updateAt
arr |> Array.map (function { bar = “snd” } -> { x with bar = “blah” } | x -> x)
Норм вариант, как раз то что нужно
Не понял что это за синтаксис такой. Шарплаб тоже не понял https://sharplab.io/#v2:DYLgZgzgNALiBOBXAdlAJiA1AHxgTwAcBTAAgDEB7CkgXhIG8SBLDZ5GAbhICMBDeECQgx4TZAHMSAXwCwAKHnAiMEvwHkqAbQC6tEpuzySxhiz0BGLn3h6ARJBi3Zck6bR6ATFf52IyNE5GJvRmdADM3jZ0tjAAFgHO2Nryisqq8PAeempBrnnYAHwkAIIZvHgAdAC2vAQkABRgKADGMEwUyAw8PnSAOAR+aIC4BNIkALRFjAAeJADuTHHdUSS93MC8scNSJNgk0+O7AJQpcgSi7GCdtoA8G4Ag+7ZAA===
У айфона просто норм кавычек нет
as x в первой ветке забыл.
Ага https://sharplab.io/#v2:DYLgZgzgNALiBOBXAdlAJiA1AHxgTwAcBTAAgDEB7CkgXhIG8SBLDZ5GAbhICMBDeECQgx4TZAHMSAXwCwAKHnAiMEvwHkqAbQC6tEpuzySxhiz0BGLn3h6ARJBi3Zck6bR6ATFf52IyNE5GJvRmdADM3jZ0tjAAFgHO2Nryisqq8PAeempBrnnYAHwkAIIZvHgAdAC2vAQkABRgKADGMEwUyAw8PtF+AdKqECQAHiQAtEWMowDuTHHdUSS23MC8sbYD2CPjRcMAlClyBKLsYJ22gDwbgCD7tkA=
function - это "имплиситный" match. Типа let text x = match x with | ... -> можно ещё представить как let test = function | ... ->
Обсуждают сегодня