खोज…


वाक्य - विन्यास

  • s ^a का एक उदाहरण है ^a आप संकलन-समय पर स्वीकार करना चाहते हैं, जो कुछ भी हो सकता है जो उन सदस्यों को लागू करता है जिन्हें आप वास्तव में सिंटैक्स का उपयोग करके कॉल करते हैं।
  • ^a जेनरिक जो होगा के समान है 'a (या 'A या 'T उदाहरण के लिए), लेकिन इन संकलन समय हल हो गई हैं, और कुछ भी के लिए अनुमति है कि फिट सभी विधि के भीतर अनुरोध उपयोग। (कोई इंटरफेस आवश्यक)

किसी भी लम्बाई के सदस्य के लिए सरल उपयोग

let inline getLength s = (^a: (member Length: _) s)
//usage:
getLength "Hello World" // or "Hello World" |> getLength
// returns 11

क्लास, इंटरफ़ेस, रिकॉर्ड उपयोग

// Record
type Ribbon = {Length:int}
// Class
type Line(len:int) = 
    member x.Length = len
type IHaveALength =
    abstract Length:int

let inline getLength s = (^a: (member Length: _) s)
let ribbon = {Length=1}
let line = Line(3)
let someLengthImplementer =
    { new IHaveALength with
        member __.Length = 5}
printfn "Our ribbon length is %i" (getLength ribbon)
printfn "Our Line length is %i" (getLength line)
printfn "Our Object expression length is %i" (getLength someLengthImplementer)

स्थिर सदस्य कॉल

यह GetLength नामक एक विधि के साथ किसी भी प्रकार को स्वीकार करेगा जो कुछ भी नहीं लेता है और एक int देता है:

((^a : (static member GetLength : int) ()))



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow