Clojure在线运行

版本:
运行结果
教程手册
代码仓库
极速运行
交互输入
极速运行模式,更高效的运行,点击编辑器上方的运行按钮即刻体验吧。
以下是用户最新保存的代码
[更多]
显示目录

看守



看守

例如,如果调用程序更改atom变量的值,并且如果Watcher函数附加到atom变量,则一旦atom的值改变,Watcher是添加到变量类型的函数,例如atom和引用变量,当变量类型的值改变时调用。 ,该函数将被调用。

观看者的Clojure中提供了以下功能。

添加观察者

手表'fn'必须是4个参数的'fn':一个键,引用,它的旧状态,它的新状态。引用的状态可能已更改,任何注册的手表都将调用其函数。

语法

以下是Watcher基本使用语法:

(add-watch variable :watcher
   (fn [key variable-type old-state new-state]))

参数 - '变量'是原子或引用变量的名称'可变类型'是变量的类型,原子或引用变量'旧状态和新状态'是将自动保存变量的旧值和新值的参数“。 key'对于每个引用必须是唯一的,并且可以删除和删除手表的手表。

返回值 -无。

下面是一个Watcher使用的例子。

(ns clojure.examples.example
   (:gen-class))
(defn Example []
   (def x (atom 0))
   (add-watch x :watcher
      (fn [key atom old-state new-state]
      (println "The value of the atom has been changed")
      (println "old-state" old-state)
      (println "new-state" new-state)))
(reset! x 2))
(Example)

输出

以上示例输出以下结果:

The value of the atom has been changed
old-state 0
new-state 2

可移除Watcher

除去已附着在引用变量的手表。

语法

以下是可删除Watcher基本使用语法:

(remove-watch variable watchname)

参数 -'variable'是atom或引用变量的名称。'watchname'是定义监视功能时给Watcher的名称。

返回值 -无。

下面是一个可删除Watcher的例子。

(ns clojure.examples.example (:gen-class))  
(defn Example  []  (def x (atom 0))  
(add-watch x :watcher (fn [key atom old-state new-state]
(println "The value of the atom has been changed")  
(println "old-state" old-state)  
(println "new-state"  new-state))) 
(reset! x 2)  (remove-watch x :watcher)  (reset! x 4))  (Example)

输出

以上示例输出以下结果:

The value of the atom has been changed
old-state 0
new-state 2

从上面的程序可以清楚地看到,第二个重置命令不会触发观察者,因为它被从观察者的列表中删除。


由JSRUN为你提供的Clojure在线运行、在线编译工具
        JSRUN提供的Clojure在线运行,Clojure 在线运行工具,基于linux操作系统环境提供线上编译和线上运行,具有运行快速,运行结果与常用开发、生产环境保持一致的特点。

title

使用此草稿 删除草稿

注册登录后可减少验证码的弹出,点击前往 注册 | 登录

皮肤:

运行模式:

嵌入代码 iframe嵌入: