루프 내에서 다음 반복에서 필요한 목록에 새 요소를 추가합니다. List<T>
.F # : mutable .Net List를 사용하여 동일한 목록에 요소를 추가 할 수 있습니까?
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')
"허용 가능"은 매우 주관적입니다. 그런 말을하는 것 : Acceptable? 가능성이 가장 높습니다. 필요한? 가능성이 높습니다. 더 빠르게 변경할 수 있습니까? 불분명 함. 문맥을 더 제공하면 더 나은 답변을 얻을 수 있습니다. 어떻게 그 목록을 만들고 있습니까? 너는 어떻게 사용하고 있니? –
F #에는 변경 가능한 목록 유형에 대한 특수 유형 약어가 있으므로 사용하는 것이 좋습니다. –
불변의 대안을 사용할 수있는 가능성은 거의 확실합니다. 문맥을 제공하면 아마 어떻게 설명 할 수 있습니다. – TheInnerLight