gpt4 book ai didi

c# - 在构建后更改项目列表

转载 作者:太空狗 更新时间:2023-10-30 00:41:40 25 4
gpt4 key购买 nike

请理解我昨天才开始编写 F#。

我在 c# 中有这个算法,其中我有一个节点列表,这些节点有一个子节点列表。

我怎样才能做到这一点?我知道 F# 处理不可变类型,不鼓励更改变量/对象。什么是解决它的好方法?

C#

public class Node
{
public List<Node> childrenNode = new List<Node>();
public void AddChildren(Node node)
{
childrenNode.Add(node);
node.Parent(this);
}
}

F#

type Node(board:Board)=
let mutable _childrenNode= Set.empty
new() = Node()
member AddChildren(node:Node)=

最佳答案

在 F# 中表示树结构的最简单方法是使用可区分的联合。下面是一个示例,它还添加了在每个节点中存储值的能力:

type Tree<'T> =
| Empty
| Node of option<'T> * List<Tree<'T>>

因此,Tree 类型由两种情况组成 - 它要么是空树,要么是具有可选值和子节点列表的节点。

数据类型是不可变的,因此 add 函数需要您传递现有树以及附加节点列表:

let addChildren (nodes: list<Tree<'T>>) (tree: Tree<'T>) : Tree<'T> =
match tree with
| Empty -> Node (None, nodes)
| Node (v,chs) -> Node (v, chs @ nodes)

模式匹配用于区分 Tree 值的两种形状。

关于c# - 在构建后更改项目列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19139257/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com