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

最も単純なタイプ以外のダックタイピングの仕方を理解できません。ここで私はエラーExpected 3 expressions, got 2を得ます。私はこれがどういう意味か分かりません。F#で複数の引数を使用してメソッドをダックする方法は?

そのよう

答えて

0

:私はこのための構文がどのようにファンキー驚か

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

。この構文と構造体の構文は、F#の弱点の2つです。

+2

メソッドのシグネチャに(ダック)タイプを指定する必要はありません。コンパイラはあなたのためにそれを理解します。 – CaringDev

関連する問題