0

table.Count = 1 テーブル反復関数が複数のキーと値のペアを取得するのはなぜですか? これが機能である場合、どのように動作を期待できますか?

//
            let table = new HashMultiMap<string, int> (HashIdentity.Structural)
            table.Add("a", 1)
            table.Add("a", 1)
            table.Add("a", 1)
            // now table.Count is one
            let reduced = table.Fold (fun k v acc -> (k,v) :: acc) [] 
            let acc = ref []
            table.Iterate (fun k v -> acc.contents <- (k,v) :: acc.contents)
            //  

Reduced および acc.contents には 3 つの ("a",1) ペアが含まれます

4

1 に答える 1

1

Countメンバーのドキュメントには次のように書かれています。

ハッシュ テーブル内のキーの総数

同じキーに複数の値が関連付けられている場合でも、キーは 1 つしかないため、この例では値 1 が期待される結果になります。私が見る限り、値の総数を返すプロパティはありませんが、次を使用して簡単に実装できますFold

let valueCount = table.Fold (fun _ _ n -> n + 1) 0
于 2012-03-23T11:56:13.313 に答える