kvbの答えはすべての理論を示しているので、コードサンプルを追加することもできます。スニペットのソースはわからないので、名前に基づいて推測をいくつか行います。元のサンプルと完全に同じでなくても便利です。 KVBが言うよう
は、コードmove canvas update
は、実際の関数呼び出しである戻り次いでMouseMove
イベントに対するハンドラとして追加される機能。
これは、次のようにmove
を宣言することができることを意味します:
let move (canvas:Canvas) (update:unit -> unit) (me:MouseEventArgs) =
// This function gets called when the mouse moves
// - values me.X and me.Y give the current mouse location
// - we can access 'canvas' that was declared when registering handler
// - we can call 'update' to do some more work...
// Pseudo-example:
canvas.Children.[0].Width <- me.X
update()
イベントハンドラを登録する場合、ハンドラだったcanvas
値にアクセスできるように、コードmove canvas update
は、move
関数の最初の二つの引数を指定しますおそらくハンドラが登録されている場所で宣言されています(可変変数を使用せずに)。
let canvas = new Canvas() // Create canvas
let update() = ... // some function that performs update
// Register handler and give it canvas and update as first two arguments
canvas.MouseMove.Add(move canvas update)
これは、 eイベントハンドラは、最初の引数としてsender:object
を取る必要はありません。部分関数アプリケーションを使用して、最初の引数としてcanvas
(送信側)を渡すことができます(したがって、キャストする必要はありません)。object
〜Canvas
)。
本当にみんなF#FUN F#FUN FUN! (可変変数を使用しないで!)私は実際にそれを得ることを確認するために、詳細を調べていますが、正しい方向に私を指摘してくれてありがとう。私はC#F GUIインターフェースのC#を考えていました。私はFUNCTIONALを考える必要がある!試してみる。val move:IInputElement - >(int - > unit) - > Input.MouseEventArgs - > unit –