5

最初の実装が KO になる理由は何ですか?

type IToto  = 
    abstract Toto : unit -> unit

{ new IToto with  
      member this.Toto = 
             fun () -> () }

{ new IToto with  
        member this.Toto () = ()  }
4

1 に答える 1

6

FSharpFunc<unit, unit> Toto { get; }コンパイル表現では、 としてコンパイルされた関数型のプロパティと、 としてコンパイルされたユニットを取ってユニットを返すメソッドとの間に違いがありますunit Toto()

最初のオブジェクト式は、別のインターフェイスを実装しています。

type IToto  = 
    abstract Toto : (unit -> unit) // Note: Parentheses around the function type!

{ new IToto with  
      member this.Toto = 
             fun () -> () }
于 2013-03-06T11:56:17.970 に答える