2012-10-14 27 views
13

Tôi nhập thông tin sau vào không gian tên Clojurescript.Không thể "sử dụng" trong clojurescript repl

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 

Dường như phương thức 'sử dụng' không tồn tại trong không gian tên cljs.user. Loại này có ý nghĩa với tôi, vì bản thân Clojurescript không thể đánh giá các biểu thức Clojure. Tuy nhiên, tôi biết rằng Clojurescript có một không gian tên clojure.zip, tôi đã sử dụng clojure.zip trong khai báo không gian tên là (:use [clojure.zip :only [insert-child]]).

Làm cách nào để sử dụng phiên bản Clojurecript của clojure.zip trong Clojurescript repl?

Trả lời

24

Do không gian tên ClojureScript được triển khai hoàn toàn khác với Clojure, ClojureScript không hỗ trợ trực tiếp các hình thức use hoặc require.

Thay vào đó, bạn phải sử dụng macro ns. Để sử dụng clojure.zip trong không gian tên cljs.user, sau đó, chỉ cần làm như sau:

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

Lưu ý rằng các hình thức hỗ trợ trong phiên bản ClojureScript của ns là một tập hợp con của những hỗ trợ trong Clojure; cụ thể, các điều khoản :usephải chỉ định một biểu mẫu :only và mệnh đề :require phải chỉ định biểu mẫu :as.

+0

chỉ là một người đứng đầu, tôi chỉ cần chạy lên chống lại cùng một vấn đề này trong năm 2016 vẫn còn, cố gắng để '(yêu cầu ...)' một số công cụ gỡ lỗi ở giữa mã của tôi –

Các vấn đề liên quan