Clojure中#的含义

Ash*_*win 2 clojure

在clojure中,您可以使用以下命令创建匿名函数 #

例如

#(+ % 1) 
Run Code Online (Sandbox Code Playgroud)

是一个接受参数并将其加1的函数。

但是我们也必须使用#正则表达式,例如

(clojure.string/split "hi, buddy" #",")
Run Code Online (Sandbox Code Playgroud)

这两个有#关系吗?

ako*_*ond 7

还有集合#{},完全限定的类名构造器#my.klass_or_type_or_record[:a :b :c],实例 #inst "yyyy-mm-ddThh:mm:ss.fff+hh:mm" 和其他一些

它们之间存在某种关联,在这种情况下,它们会#启动clojure读取器可识别的序列,该序列会将每个此类实例分派给适当的读取器。对此有一个扩展的指南

我认为存在此约定是为了将不同语法的数量减少到一种,从而简化读者。