Clojure-send

提供:Dev Guides
移動先:案内検索

Clojure-送信

この関数は、値を介してエージェントに送信するために使用されます。

構文

構文は次のとおりです。

(send agentname function value)

パラメータ-「エージェント名」は、送信機能のリダイレクト先のエージェントです。 「関数」は、エージェントの値がどのように変更されるかを決定するために使用されます。 この場合、追加+記号を使用して、エージェントの既存の値に値を追加します。 「値」は関数に渡される値であり、これはエージェントの値を適宜更新するために使用されます。

戻り値-新しい値を持つエージェントオブジェクトを返します。

これがどのように使用されるかの例は、次のプログラムに示されています。

(ns clojure.examples.example
   (:gen-class))
(defn Example []
   (def counter (agent 0))
   (println @counter)

   (send counter + 100)
   (println "Incrementing Counter")
   (println @counter))
(Example)

出力

上記のプログラムは、次の出力を生成します。

0
Incrementing Counter
0

上記のプログラムについては、次のことに注意してください。

  • 送信関数は非同期関数であるため、エージェントの値が更新されるまでに遅延があります。 これが、プログラムに「println」ステートメントを追加した理由です。 これは、Clojure環境にエージェントの値を更新するのに必要な時間を与えるためです。
  • 第二に、上記のプログラムを実行すると、プログラムはすぐに終了しません。 これは、Clojure環境がエージェントをシャットダウンしても安全かどうかわからないためです。 次の機能の説明では、エージェントをシャットダウンする方法について説明します。