2016-07-12 2 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 

Je ne peux pas comprendre comment faire du typage de canard pour tout sauf les types les plus simples. Ici, j'obtiens l'erreur Expected 3 expressions, got 2. Je n'ai aucune idée de ce que cela signifie.Comment faire pour taper une méthode en F # avec plusieurs arguments?

Répondre

0

comme ceci:

/// 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 

J'étonné comment froussard la syntaxe est. Cette syntaxe et struct sont certainement deux des points faibles de F #.

+2

Notez que vous n'avez pas besoin de spécifier les types (canard) dans la signature de la méthode. Le compilateur comprendra cela pour vous. – CaringDev