cuốn sách gpt4 ai đã làm

clojure - Làm cách nào để đánh giá cấu trúc dữ liệu clojure trong ngữ cảnh của một không gian tên?

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-03 18:42:42 26 4
mua khóa gpt4 Nike

Tôi đang viết một ứng dụng clojure để sử dụng nội bộ và tôi muốn các tệp cấu hình cũng được đưa vào clojure. Tôi đã xác định một số macro để đơn giản hóa việc ghi tệp cấu hình, nhưng khi tôi cố gắng đánh giá dữ liệu trong tệp cấu hình, nó không thể tìm thấy macro của tôi. Tuy nhiên, điều này hoạt động tốt trong REPL. Ví dụ: tôi đang sử dụng

(tải chuỗi "/path/to/config")

Tôi gặp lỗi này:

Ngoại lệ trong chuỗi "chính" java.lang.RuntimeException: Không thể giải quyết biểu tượng: defcmd trong ngữ cảnh này, biên dịch:(null:1)
tại clojure.lang.Compiler.analyze(Compiler.java:6235)
tại clojure.lang.Compiler.analyze(Compiler.java:6177)
tại clojure.lang.Compiler$InvokeExpr.parse(Compiler.java:3452)
tại clojure.lang.Compiler.analyzeSeq(Compiler.java:6411)
tại clojure.lang.Compiler.analyze(Compiler.java:6216)
tại clojure.lang.Compiler.analyze(Compiler.java:6177)
tại clojure.lang.Compiler.eval(Compiler.java:6469)
tại clojure.lang.Compiler.load(Compiler.java:6902)
tại clojure.lang.Compiler.load(Compiler.java:6872)
tại clojure.core$load_reader.invoke(core.clj:3625)
tại clojure.core$load_string.invoke(core.clj:3635)
tại serverStats.core$load_config.invoke(core.clj:67)
tại serverStats.core$_main.doInvoke(core.clj:78)
tại clojure.lang.RestFn.invoke(RestFn.java:397)
tại clojure.lang.Var.invoke(Var.java:397)
tại user$eval109.invoke(NO_SOURCE_FILE:1)
tại clojure.lang.Compiler.eval(Compiler.java:6465)
tại clojure.lang.Compiler.eval(Compiler.java:6455)
tại clojure.lang.Compiler.eval(Compiler.java:6431)
tại clojure.core$eval.invoke(core.clj:2795)
tại clojure.main$eval_opt.invoke(main.clj:296)
tại clojure.main$initialize.invoke(main.clj:315)
tại clojure.main$null_opt.invoke(main.clj:348)
tại clojure.main$main.doInvoke(main.clj:426)
tại clojure.lang.RestFn.invoke(RestFn.java:421)
tại clojure.lang.Var.invoke(Var.java:405)
tại clojure.lang.AFn.applyToHelper(AFn.java:163)
tại clojure.lang.Var.applyTo(Var.java:518)
tại clojure.main.main(main.java:37)
Nguyên nhân do: java.lang.RuntimeException: Không thể giải quyết biểu tượng: defcmd trong ngữ cảnh này
tại clojure.lang.Util.runtimeException(Util.java:156)
tại clojure.lang.Compiler.resolveIn(Compiler.java:6720)
tại clojure.lang.Compiler.resolve(Compiler.java:6664)
tại clojure.lang.Compiler.analyzeSymbol(Compiler.java:6625)
tại clojure.lang.Compiler.analyze(Compiler.java:6198)
... 28 thêm

Tuy nhiên, việc chạy lệnh tương tự từ REPL trong không gian tên của tôi vẫn hoạt động tốt.

câu trả lời hay nhất

Bạn có thể cần một số sơ đồ tải phức tạp hơn. Tôi giả sử bạn muốn đặt cấu hình vào một không gian tên cấu hình riêng tư. Nó sẽ chỉ chứa cấu hình. Các hàm trợ giúp được giữ trong một không gian tên riêng biệt được sử dụng trong không gian tên cấu hình.

(defn setup-config-space
[]
(ràng buộc [*ns* *ns*]
(trong-ns 'config.namespace)
(tham khảo-clojure)
(sử dụng 'config.helpers)))

(defn tải-config
[con đường]
(ràng buộc [*ns* *ns*]
(trong-ns 'config.namespace)
(đường dẫn tải tệp)))

Xem cách sử dụng ví dụ:

..ojure/1.4.0-alpha3% cấu hình mèo/helpers.clj                             
(ns config.helpers)

(defmacro defcmd
[x]
`(defn ~x [] "Xin chào"))
..ojure/1.4.0-alpha3% cat x.clj
(defcmd foo)
..ojure/1.4.0-alpha3% java -cp .:clojure-1.4.0-alpha3.jar clojure.main -r
Clojure 1.4.0-alpha3
user=> ; Dán các hàm trên
#'user/setup-config-space
#'người dùng/tải-config
người dùng=> (setup-config-space)
không
user=> (tải-config "x.clj")
#'config.namespace/foo
người dùng=> (config.namespace/foo)
"Xin chào"

Giới thiệu về clojure - Làm cách nào để đánh giá cấu trúc dữ liệu clojure trong ngữ cảnh của một không gian tên? , chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/8627880/

26 4 0
không gian vũ trụ
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress