Почему, когда table.Count = 1 функции итерации таблицы получают более 1 пары ключ-значение? И если это особенность, как я могу ожидать поведения?HashMultiMap сохранить повторяющиеся привязки клавиш на фоне?
//
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) пара
Я надеялся, что один ключ может быть связан только с одним значением. Итак, это нормальное поведение, когда на самом деле ключом является множество привязок? – psct
@psct Если вы используете 'HashMultiMap', то один ключ может быть связан с несколькими значениями (поэтому он называется' Multi'). Если вы хотите связать одно значение с ключом, вы можете использовать обычный F # неизменяемый «Map» или измененный .NET-словарь. –