2015-09-09 10 views
9

私はこのクラスを持っている:セカンダリコンストラクタで自動プロパティを設定する方法はありますか?

type Sample() = 
    member val test1 = "" with get,set 
    member val test2 = "" with get,set 

    // is something like the below constructor possible 
    new Sample(result1, result2) = 
     this.test1 <- "failed" 
     this.test2 <- "passed" 
     Sample() 

私はいくつかの異なる方法を試してみたが、私はそれを動作させることはできません。

答えて

5

@マークシーマンの答えは適切な解決策ですが、あなたはこの奇妙な建設使用したい正確に何を得ることができます:

type Sample() = 
    member val test1 = "" with get,set 
    member val test2 = "" with get,set 

    new (result1, result2) as sample = 
     Sample() 
      then 
       sample.test1 <- result1 
       sample.test2 <- result2 

しかし、真実と言われるが、これは私が自分自身を使ったことは一度もなく、おそらく野生では見られず、他の言語よりも多くの言語を使っています。

+0

それはコンパイルされますが、私はそれが期待していることはしません。 –

+0

Huh。私はそれが引数が使用されていない(OPのコードがしたものでもある)ためだと思います。 – scrwtp

+1

@マーク・セーマン、申し訳ありませんが、それは何を期待していますか? https://dotnetfiddle.net/wq711M –

6

これは何ですか?

type Sample(result1, result2) = 
    member val Test1 = result1 with get,set 
    member val Test2 = result2 with get,set 
    new() = Sample("failed", "passed") 

FSI:

> Sample();; 
val it : Sample = FSI_0002+Sample {Test1 = "failed"; 
            Test2 = "passed";} 
> Sample("foo", "bar");; 
val it : Sample = FSI_0002+Sample {Test1 = "foo"; 
            Test2 = "bar";} 
+1

私はそれがプライマリコンストラクタでそうすることができることを知っていますが、それが逆の場合には私はちょうど興味がありました。 – user1206480

関連する問題