2016-07-12 8 views
1
/// Sets a dependency property 
let inline setDP (prop: DependencyProperty) (v: obj) (target: ^a when ^a: (member SetValue: DependencyProperty * obj -> unit)) = 
    (^a : (member SetValue: DependencyProperty * obj -> unit) (prop,v)) 
    target 

Ich kann nicht herausfinden, wie man Ente für alles außer den einfachsten Typen tippen tut. Hier bekomme ich den Fehler Expected 3 expressions, got 2. Ich habe keine Ahnung, was das bedeutet.Wie duck eine Methode in F # mit mehreren Argumenten eingeben?

Antwort

0

Wie so:

/// Sets a dependency property 
let inline setDP (prop: DependencyProperty) (v: obj) (target: ^a when ^a: (member SetValue: DependencyProperty * obj -> unit)) = 
    (^a : (member SetValue: DependencyProperty * obj -> unit) (target,prop,v)) 
    target 

ich erstaunt, wie flippige die Syntax für diese ist. Diese und struct Syntax sind definitiv zwei von F # 's Schwachstellen.

+2

Beachten Sie, dass Sie die (Duck) -Typen nicht in der Methodensignatur angeben müssen. Der Compiler wird das für Sie herausfinden. – CaringDev