在F#中声明特定类型的列表

这里我有一个简单的二进制搜索树类型:

type Tree<'k,'v> =
    | EmptyTree
    | TreeNode of 'k * 'v * Tree<'k,'v> * Tree<'k,'v>

在C#中,如果我们有一个名为Tree的类,我们可以编写

List<Tree> tree = new List<Tree>() 

但是如何在F#中声明Tree类型的列表?

zhshyp 回答:在F#中声明特定类型的列表

在C#示例中,您使用的不是通用的 app.use(express.static('./client/build')) app.get('*',(req,res)=> { res.sendFile(path.join(__dirname,'client','build','index.html')) }) 类型-大概是包含特定类型的键和值的类型。相反,您的F#Tree类型是通用类型,这意味着如果要使用它,则必须指定要用作键和值的类型。

这意味着如果要创建树列表,则需要确定键和值的类型。 Tree<'k,'v>的F#名称是List,因此您可以编写如下内容:

ResizeArray

在某些情况下,您可以编写通用的代码,而无需指定类型。例如,您可以编写一个函数来创建两个单例树的列表:

let tree = new ResizeArray<Tree<string,int>>() 

通常,您实际上不需要编写这样的代码。如果使用F#列表而不是let twoSingletons k v = let res = new ResizeArray<Tree<string,int>>() res.Add(TreeNode(k,v,EmptyTree,EmptyTree)) res.Add(TreeNode(k,EmptyTree)) res ,则可以使用ResizeArray表示法构造列表,而不必担心显式指定类型。类型推断可解决以下问题:

[ .. ]
本文链接:https://www.f2er.com/3156887.html

大家都在问