2

F# Windows フォーム アプリケーションの作成 F# の Event.Filter 関数を発見したので、それについてもっと知りたいと思っています。私がやったことは、既存のコードを変換することです:

MyControl.MouseMove.Add( fun args ->
    if (args.Button = MouseButton.Left && args.X > 10 && args.Y > 10)
    then // do something

に :

MyControl.MouseMove
|> Event.filter ( fun args -> 
    (args.Button = MouseButtons.Left && args.X > 10 && args.Y > 10))
|> Event.add ( // do something)

私は Event.Filter ソリューションが非常に洗練されていることを発見したので、それが一種の構文糖衣にすぎないのか、それとも「ボンネットの下で」物事がどのように機能するかの違いであるのかを知りたい.

4

1 に答える 1

2

ソースを見ると、2 つのコード サンプルがほぼ同じことを行っていることがわかります。唯一の追加のオーバーヘッドは、Eventによるエクストラの作成ですfilter

私の見解では、パフォーマンスのために使用しないfilterことは過度の最適化になります。

于 2013-02-05T21:11:21.230 に答える