Clojure-sendoff

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

Clojure-見送り

エージェントが本来ブロックしている機能を割り当てられている場合があります。 簡単な例は、それ自体がブロックしているファイルからコンテンツを読んでいると考えてください。 したがって、send-off関数は最初にすぐにエージェントを返し、ファイル操作を続行します。 ファイル操作が完了すると、ファイルの内容でエージェントが自動的に更新されます。

構文

構文は次のとおりです。

(send agentname function value)

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

戻り値-ノンブロッキング関数がある場合、最初にエージェントをそのまま返します。 最後に、新しい値を持つエージェントオブジェクトを返します。

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

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

   (send-off counter + 100)
   (println @counter)
   (println @counter))
(Example)

カウンターの値をインクリメントする同じ例を見ていきますが、次の出力から、送信機能が何をするかが明確になります。

出力

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

0
0
0

値を100に設定する関数をエージェントに送信しても、すぐには反映されないことがわかります。 send-off関数は、最初にエージェントの値をそのまま返します。 Clojureによってエージェントの値が適切に設定されると、エージェントの値が更新され、エージェントの新しい値を確認できます。