Внутри цикла Я добавляю новый элемент в список, который мне нужен в следующей итерации, потому что я использую переменную .Net List<T>
.F #: Можно ли использовать изменяемый список .Net для добавления элементов в один список
F#
рекомендует использовать неизменяемые коллекции в целом, и кажется, что я не могу достичь того, что я хочу использовать неизменяемым list
или seq
.
Допустимо ли продолжать использовать изменчивый .Net List<T>
, или же рекомендуется использовать только неизменные? если да, то как я могу это достичь?
Мой код немного длинный и сложный, так что давайте рассмотрим этот псевдо F # код:
let children = new List<node>()
let bestBranchEntropies = entropiesSuchAs data.Rows parents
//Finding the best children for the best parent
bestBranchEntropies |> Seq.iter (fun bestBranch -> let attribut = IGetTheAttributByMaximumGainHere
//Creating one of the children in every iteration
let node = {
content = attribut;
branch = Some(fst bestBranch);
children = None;
isLeaf = false;
}
//Considering it a child
children.Add node
)
//After having all the children
let children' = children |> Seq.map (fun child -> {
content = child.content;
branch = child.branch;
children = //recursive call here to do the same work above (getting children again, yeah it's a tree)
isLeaf = child.isLeaf;
})
Some(children')
«Приемлемый» очень субъективен. Сказав это: приемлемо? Скорее всего. Необходимо? Скорее всего, нет. Быстрее использовать mutable? Не понятно. Если вы дадите больше контекста, вы получите лучшие ответы. Как вы строите список? Как вы его используете? –
F # имеет аббревиатуру специального типа для изменяемого типа списка, поэтому его можно использовать. –
Существует почти наверняка непреложная альтернатива, доступная вам, если вы предоставите нам какой-то контекст, мы, вероятно, объясним, как это сделать. – TheInnerLight