当前位置: 首页 > 文档资料 > Clojure 中文教程 >

send

优质
小牛编辑
126浏览
2023-12-01

此函数用于将值发送到代理。

语法 (Syntax)

以下是语法。

(send agentname function value)

Parameters - 'agentname'是将send函数重定向到的代理程序。 'function'用于确定代理的值将以何种方式更改。 在我们的例子中,我们将使用加号+符号将值添加到代理的现有值。 'Value'是传递给函数的值,而后者又将用于相应地更新代理的值。

Return Value - 返回具有新值的代理对象。

例子 (Example)

以下程序显示了如何使用它的示例。

(ns clojure.examples.example
   (:gen-class))
(defn Example []
   (def counter (agent 0))
   (println @counter)
   (send counter + 100)
   (println "Incrementing Counter")
   (println @counter))
(Example)

输出 (Output)

上述程序产生以下输出。

0
Incrementing Counter
0

请注意以下有关上述计划的内容。

  • 由于send函数是异步函数,因此更新代理值的时间会有延迟。 这就是为什么我们在程序中添加了额外的'println'语句。 这是为了给Clojure环境提供相应更新代理值所需的时间。

  • 其次,当您运行上述程序时,程序不会立即终止。 这是因为Clojure环境不知道关闭代理是否安全。 我们将在下一个函数描述中看到如何关闭代理。