clojure - clojurescript repl 中无法出现 "use"

标签 clojure clojurescript

我在 Clojurescript 命名空间中输入以下内容。

cljs.user> (use '[clojure.zip :only [insert-child]])

WARNING: Use of undeclared Var cljs.user/use at line 1 
"Error evaluating:" (use (quote [clojure.zip :only [insert-child]])) :as "cljs.user.use.call(null,cljs.core.vec([\"\\uFDD1'clojure.zip\",\"\\uFDD0'only\",cljs.core.vec([\"\\uFDD1'insert-child\"])]));\n"
#<TypeError: Cannot call method 'call' of undefined>
TypeError: Cannot call method 'call' of undefined
    at eval (eval at <anonymous> (http://localhost:3000/main.js:32728:147), <anonymous>:1:85)
    at eval (eval at <anonymous> (http://localhost:3000/main.js:32728:147), <anonymous>:6:3)
    at http://localhost:3000/main.js:32728:142
    at evaluate_javascript (http://localhost:3000/main.js:32741:4)
    at Object.callback (http://localhost:3000/main.js:32806:138)
    at goog.messaging.AbstractChannel.deliver (http://localhost:3000/main.js:31059:13)
    at goog.net.xpc.CrossPageChannel.deliver_ (http://localhost:3000/main.js:32164:14)
    at Function.goog.net.xpc.NativeMessagingTransport.messageReceived_ (http://localhost:3000/main.js:31732:13)
    at goog.events.Listener.handleEvent (http://localhost:3000/main.js:22590:26)
    at Object.goog.events.fireListener (http://localhost:3000/main.js:22924:21)
nil

似乎表明 cljs.user 命名空间中不存在“use”方法。这对我来说是有意义的,因为 Clojurescript 本身无法评估 Clojure 表达式。但是,我知道 Clojurescript 有一个 clojure.zip 命名空间,我在命名空间声明中使用了 clojure.zip (:use [clojure.zip :only [insert-child]]) .

如何在 Clojurescript repl 中使用 clojure.zip 的 Clojurescript 版本?

最佳答案

由于 ClojureScript 命名空间的实现方式与 Clojure 完全不同,因此 ClojureScript 不直接支持 userequire 形式。

相反,您必须使用ns宏。要在 cljs.user 命名空间中使用 clojure.zip,只需执行以下操作:

(ns cljs.user (:use [clojure.zip :only [insert-child]]))

请注意,ns 的 ClojureScript 版本支持的表单是 Clojure 支持的表单的子集;具体来说,:use 子句必须指定 :only 形式,并且 :require 子句必须指定 >:as 形式。

关于clojure - clojurescript repl 中无法出现 "use",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12879027/

相关文章:

java - ClojureScript 编译器如何将 cljs 转换为 Javascript

clojure - 引用错误 : "goog" is not defined when running lein cljsbuild

clojure - cljc 文件的基本功能

recursion - 迭代过程与递归过程

c++ - 语言;为二维空间中的对象设计用于碰撞检测的高性能数据结构

javascript - Clojurescript:调用 Google map API 时出现问题

clojure - 阅读器标签可以与 ClojureScript 一起使用吗

Clojure 规范强制嵌套映射值

optimization - 在 Clojure 中,我可以优化扫描吗?

xml - 如何仅从 clojure 中的嵌套 XML 中过滤某些值?