2009-10-26 11 views
5

मैं this question के बारे में पता कर रहा हूँ, लेकिन प्रश्नकर्ता एक और प्रश्न का उत्तर के साथ सामग्री रहे हैं लगता हैएफ # में निर्माता से विधियां प्रारंभ कैसे

(कैसे निर्माता ओवरलोड) मैं एक वर्ग है जो की तरह , एक अस्थायी वर्ग के चारों ओर एक उन्नत memoizer रूप में कार्य करता है, ताकि मैं इसे के रूप में बाहर से अपरिवर्तनीय इलाज कर सकते हैं:

type Wrapper(args) = 
    let tool = new MutableTool() 
    tool.Init(args) //<--"Unexpected identifier in definition" 

    let lookupTable = //create lookup using tool here 
    member this.Lookup(s) = //callers use lookupTable here 

मैं बाहर काम नहीं कर सकता "उपकरण" पर Init विधि आह्वान करने के लिए कैसे। मैं क्या खो रहा हूँ?

उत्तर

8

IIRC, do कीवर्ड यहाँ काम कर सकते हैं:

type Wrapper(args) = 
    let tool = new MutableTool() 
    do tool.Init(args) 

    let lookupTable = //create lookup using tool here 
    member this.Lookup(s) = //callers use lookupTable here 

मुझे यकीन है कि आप कोड की अंतिम पंक्ति के साथ क्या मतलब नहीं कर रहा हूँ, इसलिए मैं उसे छोड़ दिया के रूप में आप यह लिखा था ...

+0

कोई और लाल squiggles, धन्यवाद! – Benjol

5

आपको "डू" की आवश्यकता है:

type Foo(args) = 
    let x = new Whatever() 
    do x.Bar() 

    member .... 
संबंधित मुद्दे