2017-10-19 9 views
1

私はtestFactoryクラスを持っています。その目的は、工場を通過できるようにすることであり、デモ目的で結果をコンソール化することです。今のところ、テストメソッド内でcreateProductAを呼び出そうとすると、コンパイラーはcreateProductAがバインドされていないと文句を言うでしょう(Unbound value createProductA)。OOP - Reasonで内部的にクラスメソッドを呼び出す方法

クラス内でメソッドを呼び出すための適切な構文は何ですか?

class testFactory (factory: abstractFactory) => { 
    as _; 
    pub createProductA => factory#createProductA; 
    pub createProductB => factory#createProductB; 

    pub test() => { 
    Js.log createProductA; 
    Js.log createProductB; 
    } 
}; 
+1

:// realworldocamlを

はこれを試してみてください。 org/v1/ja/html/classes.html)。 [reason-tools](https://github.com/reasonml/reason-tools)を使ってOCamlコードをReasonに翻訳することができます。 – glennsl

+0

私はその章を読みましたが、私はいつもそれを(地下鉄で)特に読んでいて、_と#を使ってみました。おそらく時間をかけて急いでいる間、私は何か見落としました。いつものようにありがとう。 –

答えて

3

クラス定義のas _;一部の出番あなたはそれがためだったかと思ってきた場合、これは、あります。

createProductAおよびcreateProductBは、関数ではなくメソッドであるため、オブジェクトに対して呼び出す必要があります。 Reason/OCamlは、現在のオブジェクトをthisselfのような名前に自動的にバインドしませんが、それを行うにはそれを入れます。これは正確にはasのものです。_は、いつものように、 "これは気にしません"たとえば、as _;を次のように変更するとします。 as self;selfを現在のオブジェクトとして別の場所で参照できるようになります。私はこの前に言及した場合、私は知らないが、あなたは[クラスの実世界のOCamlのセクション](httpsを見ていたいかもしれません

class testFactory (factory: abstractFactory) => { 
    as self; 
    pub createProductA => factory#createProductA; 
    pub createProductB => factory#createProductB; 

    pub test() => { 
    Js.log self#createProductA; 
    Js.log self#createProductB; 
    } 
}; 
関連する問題