पर विचार करें मैं दो अलग अलग पुस्तकालय प्रकार है:इनलाइन समारोह और प्रकार विस्तार
type Foo = { foo : string }
type Bar = { bar : int32 }
मैं सामान्य समारोह zoo
है कि या तो Foo
या Bar
उदाहरण के लिए काम करेंगे लागू करना चाहते हैं। और मैं Foo
और Bar
नहीं बदल सकता क्योंकि वे लाइब्रेरी कोड का हिस्सा हैं।
// Library.fs
module Library
type Foo = { foo : string }
type Bar = { bar : int32 }
// Program.fs
type Foo with
static member zoo (f : Foo) = "foo"
type Bar with
static member zoo (b : Bar) = "bar"
let inline zoo (x : ^t) =
(^t : (static member zoo : ^t -> string) x)
let f = zoo { foo = "1" } // error FS0001: The type 'Foo' does not support the operator 'zoo'
क्यों नहीं इनलाइन समारोह परिभाषा प्रकार एक्सटेंशन पर निर्भर करता है:
यहाँ मेरी पहली प्रकार एक्सटेंशन और इनलाइन समारोह का उपयोग कर के रूप में समझाया here प्रयास है? प्रारंभिक Foo
और Bar
प्रकार परिभाषाओं को बदलने के बिना मैं अपनी समस्या को कैसे हल कर सकता हूं?