Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.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
Clojure/ClojureScript和.cljc它们是如何相互作用的?_Clojure_Clojurescript - Fatal编程技术网

Clojure/ClojureScript和.cljc它们是如何相互作用的?

Clojure/ClojureScript和.cljc它们是如何相互作用的?,clojure,clojurescript,Clojure,Clojurescript,我对.cljc文件格式感到困惑。我想知道在.cljc源文件中Clojure和ClojureScript函数是否可以一起交互。我还想知道是否可以从cljc调用clj,调用cljs源文件。例如,如果我在.cljc源文件中定义了一个函数,我可以从ClojureScript源文件调用该函数吗 我想知道在.cljc源文件中是否可以Clojure和 ClojureScript函数相互作用 是的,如果通用代码与平台无关,那么这是可能的,尤其是微不足道的,例如: (defn my-reduce [xs] (

我对.cljc文件格式感到困惑。我想知道在.cljc源文件中Clojure和ClojureScript函数是否可以一起交互。我还想知道是否可以从cljc调用clj,调用cljs源文件。例如,如果我在.cljc源文件中定义了一个函数,我可以从ClojureScript源文件调用该函数吗

我想知道在.cljc源文件中是否可以Clojure和 ClojureScript函数相互作用

是的,如果通用代码与平台无关,那么这是可能的,尤其是微不足道的,例如:

(defn my-reduce [xs]
  (reduce + xs))
上述代码中的所有函数和表单都存在于ClojureScript和Clojure中,因此不需要做任何额外的工作

还可以使用以下方法包括与平台相关的代码部分:

在上面的代码中,标准读取器是有条件的吗?使用

如果我在.cljc源文件中定义了一个函数,我可以调用它吗 是否从ClojureScript源文件中删除函数

是的,绝对如此,但要小心确保您调用的代码不包含任何特定于JVM的代码

在我的代码示例中,您可以从ClojureScript或Clojure调用json,因为我一直在仔细地隔离阅读器条件中的平台差异

我想知道在.cljc源文件中是否可以Clojure和 ClojureScript函数相互作用

是的,如果通用代码与平台无关,那么这是可能的,尤其是微不足道的,例如:

(defn my-reduce [xs]
  (reduce + xs))
上述代码中的所有函数和表单都存在于ClojureScript和Clojure中,因此不需要做任何额外的工作

还可以使用以下方法包括与平台相关的代码部分:

在上面的代码中,标准读取器是有条件的吗?使用

如果我在.cljc源文件中定义了一个函数,我可以调用它吗 是否从ClojureScript源文件中删除函数

是的,绝对如此,但要小心确保您调用的代码不包含任何特定于JVM的代码


在我的代码示例中,您可以从ClojureScript或Clojure调用json,因为我一直在仔细地隔离阅读器条件中的平台差异。

好的,我理解这一点,但例如,我可以将cljs源文件中的deref atom共享给cljc吗?我刚从Clojure/Script开始,我得到了一些让我困惑的细节。是的,你可以做到。数据可以双向流动。.cljc文件没有什么特别神奇的地方。如果主机平台可以加载和解析它们,那么它们将与任何其他.clj或.cljs文件一样工作,前提是不混合平台调用。e、 g.不要试图从ClojureScript构建java.net.URI。如果您认为.cljc文件可能同时是.clj和.cljs文件,那么它可能会有所帮助。。。我想做的是,根据cljs中原子的bool值触发clojure事件,例如在repl中打印。这可能吗?啊,不,如果我正确理解你的建议,那么你不能直接这么做。这是因为在运行时,.cljs代码运行在与JVM中的.clj代码不同的进程(浏览器线程或Node.js内部)中。这两个进程可以共享公共代码,但它们不在同一内存空间中运行。要在这两个进程之间通信,您需要发送某种消息,例如,通过HTTP的REST调用。很抱歉,我没有马上完全听懂你的意思。我希望至少我已经帮你补充了一点关于.cljc文件的背景知识。是的,你做了,我很感激!因此,如果我理解正确,如果我想在两种语言之间实现这种通信,我需要实现一个带有请求处理程序的“api”,比如[datascript]内存中的db来处理状态,对吗?好的,我理解,但是举个例子,我可以将一个deref atom从我的cljs源文件共享到cljc吗?我刚从Clojure/Script开始,我得到了一些让我困惑的细节。是的,你可以做到。数据可以双向流动。.cljc文件没有什么特别神奇的地方。如果主机平台可以加载和解析它们,那么它们将与任何其他.clj或.cljs文件一样工作,前提是不混合平台调用。e、 g.不要试图从ClojureScript构建java.net.URI。如果您认为.cljc文件可能同时是.clj和.cljs文件,那么它可能会有所帮助。。。我想做的是,根据cljs中原子的bool值触发clojure事件,例如在repl中打印。这可能吗?啊,不,如果我正确理解你的建议,那么你不能直接这么做。这是因为在运行时,.cljs代码运行在与JVM中的.clj代码不同的进程(浏览器线程或Node.js内部)中。两个进程可以共享公共代码,但它们不运行
要在两个进程之间通信,您需要发送某种消息,例如,通过HTTP的REST调用。很抱歉,我没有马上完全听懂你的意思。我希望至少我已经帮你补充了一点关于.cljc文件的背景知识。是的,你做了,我很感激!因此,如果我理解正确,如果我想在两种语言之间实现这种通信,我需要实现一个带有请求处理程序的“api”,比如[datascript]内存中的db来处理状态,对吗?