F#
Statisch opgeloste typeparameters
Zoeken…
Syntaxis
-
sis een exemplaar van^au tijdens het compileren wilt accepteren, wat alles kan zijn dat de leden implementeert die u daadwerkelijk roept met behulp van de syntaxis. -
^ais vergelijkbaar met generieke geneesmiddelen die bijvoorbeeld'a(of'Aof'T) zijn, maar deze zijn tijdens de compilatie opgelost en laten alles toe dat binnen de gevraagde methoden past. (geen interfaces vereist)
Eenvoudig gebruik voor alles dat een lengte-lid heeft
let inline getLength s = (^a: (member Length: _) s)
//usage:
getLength "Hello World" // or "Hello World" |> getLength
// returns 11
Klasse, interface, recordgebruik
// 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)
Statische ledenoproep
dit accepteert elk type met een methode genaamd GetLength die niets neemt en een int teruggeeft:
((^a : (static member GetLength : int) ()))
Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow