f# - 没有参数列表的类定义

标签 f#

F# 接受以下内容:

type Abc =
    member this.A = 10

由于没有提供参数列表,因此没有默认构造函数。可以在Abc 中添加构造函数吗? ?如果没有,可以用 Abc 做什么?

最佳答案

我想不出这个有很多用途,但你可以做两件事

  • 继承自它,尽管派生类型也不能实例化
  • 用静态成员扩展它(虽然用模块更好地实现,也可以扩展)

  • type Abc =
        member this.A = 10
    
    [<Class>]
    type Def = 
        inherit Abc
    
    type Abc with
        static member Foo() = ()
    

    在 C# 中,接口(interface)或抽象类的代码契约在“契约类”中定义,该契约类必须标记为抽象并具有私有(private)构造函数(即它是不可实例化的)。在我看来,这是实现这一目标的更好方法。但是 C# 不支持无构造函数的类。

    关于f# - 没有参数列表的类定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23395324/

    相关文章:

    F# 在 KeyNotFoundException 中添加值以映射结果

    function - 类型和功能

    f# - 如何在 F# 中调用 bool.TryParse

    f# - FParsec 无法识别类型的构造函数

    f# - 并行化数组创建

    f# - 在 F# 中使用序列向上转换

    f# - F# 中的教会数字

    f# - 有没有好的 F# 文本编辑器?

    functional-programming - 功能惯用的 FFT

    .net - F# 函数返回值