0

为什么 table.Count = 1 表迭代函数获得超过 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)
            //  

减少和 acc.contents 包含三个 ("a",1) 对

4

1 回答 1

1

Count成员的文件说:

哈希表中的键总数

如果您有多个与同一个键关联的值,则仍然只有一个键,因此值 1 是您的示例的预期结果。据我所见,没有返回值总数的属性,但您可以使用以下方法轻松实现Fold

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