Mã sau đây thực hiện như mong đợi nhưng cung cấp cho một NullPointerException
ở cuối. Tôi làm gì sai ở đây?Tại sao tôi nhận được NPE trong mã sau?
(ns my-first-macro)
(defmacro exec-all [& commands]
(map (fn [c] `(println "Code: " '~c "\t=>\tResult: " ~c)) commands))
(exec-all
(cons 2 [4 5 6])
({:k 3 :m 8} :k)
(conj [4 5 \d] \e \f))
; Output:
; Clojure 1.2.0-master-SNAPSHOT
; Code: (cons 2 [4 5 6]) => Result: (2 4 5 6)
; Code: ({:k 3, :m 8} :k) => Result: 3
; Code: (conj [4 5 d] e f) => Result: [4 5 d e f]
; java.lang.NullPointerException (MyFirstMacro.clj:0)
; 1:1 user=> #<Namespace my-first-macro>
; 1:2 my-first-macro=>
(Ví đúng cú pháp nổi bật mã, đi here.)
+1 jejej, được sử dụng cho những ngoặc :) – OscarRyz
+1, bất kỳ cách khác để khắc phục? – missingfaktor
Chắc chắn, bạn có thể viết lại nó để mở rộng đến một 'liều lượng' vv Nhưng tại sao? Đây là một giải pháp hoàn toàn hợp lý và thay đổi đối với mã hiện tại của bạn là tối thiểu; Tôi muốn nói với nó. –