HashMultiMap сохранить повторяющиеся привязки клавиш на фоне? - PullRequest
0 голосов
/ 23 марта 2012

почему, когда 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)
            //  

уменьшено и в соотв. Содержании содержится три ("a", 1) пары

1 Ответ

1 голос
/ 23 марта 2012

Документация для члена Count гласит:

Общее количество ключей в хеш-таблице

Если у вас есть несколько значений, связанных с одним и тем же ключом, все еще есть только один ключ, поэтому значение 1 является ожидаемым результатом для вашего примера.Насколько я вижу, нет свойства, которое возвращает общее количество значений , но вы можете легко реализовать это, используя Fold:

let valueCount = table.Fold (fun _ _ n -> n + 1) 0
...