HashMultiMap сохранить повторяющиеся привязки клавиш на фоне?

Почему при 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)
            //  

сокращение и соотв. содержание содержит три ("а",1) пары

1 ответ

Решение

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

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

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

let valueCount = table.Fold (fun _ _ n -> n + 1) 0
Другие вопросы по тегам