1

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

私はしたいと思います:

  1. タプルの最初の項目 (つまりノード) のみを操作します。
  2. マップまたはノードのリストのキーと値のペアのいずれかを反復します
  3. キー内のリストが両方に存在する場合は、マップ内のノード値をそれらに置き換えます
  4. キーがマップに存在しない場合は、ノードをリストからマップに追加しました
  5. 更新されたマップを返す

返されたタプルを解析する必要があるという事実を無視して、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 と機能的なスタイルを使用してこれにどのようにアプローチしますか?

4

1 に答える 1