Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Clojure使用regexp解析/编译有多聪明?_Java_Regex_Clojure_Clojure Java Interop - Fatal编程技术网

Java Clojure使用regexp解析/编译有多聪明?

Java Clojure使用regexp解析/编译有多聪明?,java,regex,clojure,clojure-java-interop,Java,Regex,Clojure,Clojure Java Interop,想象一下,我有一个类似于那个的Clojure函数 (defn ABC [tag v] (let [value (->> (str/split v #",") (map str/trim) (map u/capitalize) (str/join ", "))] ...))) 该函数可以被多次调用。regexp#“,”是否只

想象一下,我有一个类似于那个的Clojure函数

(defn ABC
  [tag v]
  (let [value (->> (str/split v #",")
                   (map str/trim)
                   (map u/capitalize)
                   (str/join ", "))]
...)))
该函数可以被多次调用。regexp#“,”是否只解析一次(我希望如此)?有没有关于源代码/证明的要点

如果我有一个具有相同regexp的第二个函数呢。从技术上讲,它是否与第一个函数中的regexp实例相同?或者是两个独立的regexp

(defn XYZ [v]
  (let [adr (str/split v #",")]
        (if (> (count adr) 5)
...
)
对于函数:

(defn--xx--[](s/split“foo”#“bar”))
clj反编译器为其生成以下java:

import clojure.lang.*;
导入java.util.regex.*;
公共最终类调度程序$\uuuxx\uuuuuu扩展了一个函数
{
公共静态最终Var常量0;
公共静态最终对象常量1;
公共静态对象invokeStatic(){
返回((IFn)调度程序$\uuuuxx\uuuuu.const\uuuu 0.getRawRoot()).invoke(“foo”,调度程序$\uuuuuuxx\uuuuuuu.const\uu 1);
}
@凌驾
公共对象调用(){
返回invokeStatic();
}
静止的{
常量0=RT.var(“clojure.string”、“split”);
const__1=Pattern.compile(“bar”);
}
}
如您所见,它被编译成静态初始值设定项块中的
模式。所以可以把它写成文字

第二个函数将有自己的
模式
对象。如果你想分享这个实例,你应该自己分享

(def pat#“bar”)