F# マップ内に含まれるキーと値のペアのコレクションがあります
type node = {myFloat:float, data1:int; data2:int;}
type nodesCollection = {metaData:int nodes:Map<float,node>}
let results = processData (nodes:Map<float,node>)
関数 processData は、次のシグネチャを持つタプルのリストを返します
val results : (node * int * int * int * int) List
私はしたいと思います:
- タプルの最初の項目 (つまりノード) のみを操作します。
- マップまたはノードのリストのキーと値のペアのいずれかを反復します
- キー内のリストが両方に存在する場合は、マップ内のノード値をそれらに置き換えます
- キーがマップに存在しない場合は、ノードをリストからマップに追加しました
- 更新されたマップを返す
返されたタプルを解析する必要があるという事実を無視して、Dictionary<float,node>
foreach newNode in nodesInList
{
if (nodesCollection.nodes.Contains(newNode.myfloat))
nodesCollection.nodes[newNode.myfloat] = node
else
nodesCollection.nodes.Add(newNode.myfloat, node);
}
return nodesCollection.nodes
Map と機能的なスタイルを使用してこれにどのようにアプローチしますか?