7

f# での新しいイベントの作成に関するコードを読んでいるときに、event.Publish と event.Trigger の 2 つの呼び出しに遭遇しましたが、その意味についてはよくわかりません。彼らが何をしているのか説明してもらえますか?

マニュアルに書かれていることを考慮してください: event.Publish観察を第一級の値として公開します。 event.Trigger指定されたパラメーターを使用して観測をトリガーします。

私はイタリア人なので、この文脈で使用される「観察」という用語は、私には何の役にも立ちません。

4

2 に答える 2

7

イベントを公開する新しい F# 型を実装する際の一般的なパターンは、イベント値をローカル フィールドとして作成event.Triggerし、コード内のどこかを使用してイベントをトリガーし、次を使用して型のユーザーに公開することですtrigger.Publish

type Counter() =
  // Create the `Event` object that represents our event
  let event = new Event<_>()
  let mutable count = 0
  member x.Increment() =
    count <- count + 1
    if count > 100 then 
      // Trigger the event when count goes over 100. To keep the sample
      // simple, we pass 'count' to the listeners of the event.
      event.Trigger(count)
  // Expose the event so that the users of our type can register event handlers
  [<CLIEvent>]
  member x.LimitReached = event.Publish

パブリッシュされたメンバーのCLIEvent属性はオプションですが、知っておくとよいでしょう。これは、メンバーが .NET イベントにコンパイルされることを示しています (そして、C# はそれを として認識しますevent)。追加しない場合、F# はそれを型のメンバーとして公開しますIEvent(これは F# の使用には問題ありません)。

于 2013-04-10T12:14:37.873 に答える