给出一个类似(简化)的列表:
type foo(n:string,m:string,l:string) =
member f.name=n
member f.val1=m
member f.val2=l
let dates = [
foo("a","aa","aaa")
foo("b","bb","bbb")
]
Run Code Online (Sandbox Code Playgroud)
如何形成一个不可变的字典类型结构(例如,Map,IDictionary ......任何其他?)key:foo.name,value:foo
?
我最好的猜测是
let fooDict = for f in foo do yield f.name,f
Run Code Online (Sandbox Code Playgroud)
但是for-comprehension语法只能用于制作列表,数组或seq?
Gus*_*rra 12
创建一个不可变的字典(接口是可变的,但如果你尝试修改它会引发异常)
[ for f in dates -> f.name,f ] |> dict
Run Code Online (Sandbox Code Playgroud)
要么
dates |> Seq.map (fun f -> f.name, f) |> dict
Run Code Online (Sandbox Code Playgroud)
要创建不可变的Map:
[ for f in dates -> f.name,f ] |> Map.ofSeq
Run Code Online (Sandbox Code Playgroud)
要么
dates |> Seq.map (fun f -> f.name, f) |> Map.ofSeq
Run Code Online (Sandbox Code Playgroud)