1

順序に関係なく、2つのリストのメンバーが同じであることを確認したいと思います。

let memCount items = items |> Seq.countBy id |> Map.ofSeq
let memberEquals items1 items2 = memCount items1 = memCount items2

現在、私はこれを次のようにテストで使用しています。

memberEquals expected actual |> should be True

ただし、これはエラー報告にはあまり適していません。

FsUnitを拡張して、またはにmemberEquals類似したものを追加できますequalscontains?または、リストを比較する前に、常にリストを並べ替えることもできます。ここでの最善のアプローチは何ですか?

(私はFsUnitとnUnitを使用していますが、その価値はあります。)

4

1 に答える 1

5

関数は、リストに同じメンバー(同じ数のアイテムのみ)があるかどうかをテストしませmemberEqualsん。これを行う最も簡単な方法は次のとおりです。

let memberEquals items1 items2 = (set items1 = set items2)

リストに重複が含まれている可能性がある場合は、代わりにリストとして並べ替えて比較する必要があります。

†</sup>このset関数については、 MSDNで読むことができます。

于 2012-06-12T19:16:24.147 に答える