Clojure中IFn和Fn之间的差异

Ertugrul Cetin

我不明白IFn和Fn之间的区别。

你能举个例子吗?

请提供这些功能之间的区别:

(fn? x)

(ifn? x)

他们表现得一样。

皮特雷克·比兹尔(Piotrek Bzdyl)

Clojure文档非常清楚地描述了差异:

(fn? x) 如果x实现Fn(即是通过fn创建的对象),则返回true。

(ifn? x)如果x实现IFn,则返回true。请注意,许多数据结构(例如集合和映射)都实现了IFn

您可以对其进行测试:

(fn? (fn [] nil)) ;; => true
(fn? #{}) ;; => false
(fn? {}) ;; => false
(fn? []) ;; => false
(fn? :a) ;; => false
(fn? 'a) ;; => false

(ifn? (fn [] nil)) ;; => true
(ifn? #{}) ;; => true
(ifn? {}) ;; => true
(ifn? []) ;; => true
(ifn? :a) ;; => true
(ifn? 'a) ;; => true

换句话说,fn?说它的参数是否是仅是一个函数(使用来创建(fn ...)ifn?的对象说它是否可以像函数一样被调用(即使不是用来创建的(fn ...))。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Clojure中IFn和Fn之间的差异

来自分类Dev

Clojure中类型和类之间的差异

来自分类Dev

Clojure中((3)和3之间的差异

来自分类Dev

Clojure中的IFn代表什么?

来自分类Dev

两种算法之间 FP 和 FN 率的差异

来自分类Dev

Bash中$ *和$ @之间的差异

来自分类Dev

R 中 %% 和 % 之间的差异

来自分类Dev

Clojure中“->”和“->>”之间的区别

来自分类Dev

JavaScript中的fn()和fn.call()之间的区别

来自分类Dev

R中的修复和编辑之间的差异

来自分类Dev

Powershell中getElementById和getElementsByName之间的差异

来自分类Dev

VTK中顶点和点之间的差异

来自分类Dev

mahout中的StandardNaiveBayesClassifier和ComplementaryNaiveBayesClassifier之间的差异

来自分类Dev

网址中%20和%2之间的差异

来自分类Dev

Twig中{%include''%}和{{include('')}}之间的差异

来自分类Dev

组装中(sp)和[sp]之间的差异

来自分类Dev

编码中0和-0之间的差异

来自分类Dev

mahout中的StandardNaiveBayesClassifier和ComplementaryNaiveBayesClassifier之间的差异

来自分类Dev

Twig中{%include''%}和{{include('')}}之间的差异

来自分类Dev

数组中0和'0'之间的差异

来自分类Dev

R中相交和匹配之间的差异

来自分类Dev

JavaScript 和 ActionScript 中的“this”之间的差异

来自分类Dev

Clojure中mod和rem之间的区别

来自分类Dev

Clojure中(list a)和'(a)之间的区别

来自分类Dev

Clojure ClassCastException长到IFn

来自分类Dev

[]和[]()之间的差异

来自分类Dev

“ +:”和“ ::”之间的Scala差异

来自分类Dev

<%=和<%#之间的差异?

来自分类Dev

[[]]和[]之间的R差异