Cnjure中的IFn代表什么?

Edw*_*ard 3 java clojure

在Clojure的Java源代码中,我看到:

import clojure.lang.RT;
import clojure.lang.IFn;
Run Code Online (Sandbox Code Playgroud)

RT似乎代表"运行时"(虽然在答案中没有给出官方消息来源:在clojure源代码中,RT代表什么?)

但是什么IFn代表什么?

Ste*_*bel 11

接口功能.Clojure使用Java接口的大写"I"前缀和Java抽象类的"A".

另请参见IFn JavadocIFn源


lee*_*ski 5

fn用 clojure 的术语来说,和之间还有一个区别ifn

user> (defn f [x] x)
#'user/f

user> (map fn? [f #(list %) :keyword 'sym {:a 10} #{123} [1 2 3] 10 "asd"])
(true true false false false false false false false)

user> (map ifn? [f #(list %) :keyword 'sym {:a 10} #{123} [1 2 3] 10 "asd"])
(true true true true true true true false false)
Run Code Online (Sandbox Code Playgroud)

因此,正如您所看到的fn?,仅适用于实际函数,而ifn?如果适用于任何内容,则可以将其作为函数调用(如关键字、映射等)