什么是ARef中使用的验证方法?

时间:2012-10-12 00:34:42

标签: clojure

在clojure的ARef实现中,有三种方法

void setValidator(IFn vf);

IFn getValidator();

void validate(IFn vf, Object val)

这些方法用于什么?

1 个答案:

答案 0 :(得分:3)

验证器函数是一个参数函数,它将在ARef(var / ref / agent / atom)的新值发布之前调用。如果函数返回false或抛出异常,则不会更改ARef的值。

getter对应核心函数get-validator,而setter对应set-validator!validate由clojure代码调用,因此您不需要调用它。

有关示例,请参阅the clojure docs