gpt4 book ai didi

f# - 如何在 F# 中使用字符串列表类型的自动属性声明类?

转载 作者:行者123 更新时间:2023-12-02 05:47:39 26 4
gpt4 key购买 nike

我很难理解我应该如何在 F# 中定义类,因为我的属性还没有声明值。等同于 c# 代码的东西:

class Entity 
{
public string Name { get; set; }
public List<string> Favorites { get; set;}
}

我只能声明定义好的类型,比如

type Entity = 
member val Name = "" with get, set

当我分配 null 时,Name 的类型将为 null。

最佳答案

如评论中所述,null在 F# 中不推荐使用值,因此最好尽可能避免使用它们。 F# 类型也不允许 null默认情况下,如果您使用不可变 F# list类型,那么最好的选择是将属性初始化为一个空列表:

type Entity() = 
member val Name = "" with get, set
member val Favorities : list<string> = [] with get, set

请注意,我添加了类型注释 list<string>因为编译器无法仅从代码中推断空列表包含字符串,您最终会得到 list<obj>否则。

C# List类型在 F# 中缩写为 ResizeArray由于这是 .NET 类型,因此可以将此类型的属性初始化为 null :

type Entity() = 
member val Name = "" with get, set
member val Favorities : ResizeArray<string> = null with get, set

我想如果您使用一些非 F# 友好的 ORM 和类似的东西,这可能会有用,但否则,使用它可能会给您带来很多痛苦和意外错误。

关于f# - 如何在 F# 中使用字符串列表类型的自动属性声明类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45963534/

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