簡體   English   中英

將列表元素傳遞到哈希映射時,var clojure.core / unquote-splicing是未綁定錯誤

[英]Var clojure.core/unquote-splicing is unbound error while passing list elements to hash-map

我正在嘗試從交錯列表創建地圖並遇到錯誤。 這是我在做什么:

(interleave ['a 'b] [1 2])

給出列表(a 1 b 2)。

如果我想從一堆元素中創建一個哈希映射,我可以做

(hash-map 'a 1 'b 2)

將兩者結合在一起

(hash-map ~@(interleave ['a 'b] [1 2]))

我收到此錯誤:

java.lang.IllegalStateException: Var clojure.core/unquote-splicing is unbound. (repl-1:2)

如何將列表的元素傳遞給哈希映射?

您需要使用apply

(apply hash-map (interleave ['a 'b] [1 2]))

apply將函數應用於一系列參數; 請在REPL上鍵入(doc apply)以獲取詳細信息。

~@是語法引用的兩個同伴之一,寫為反引號,另一個是~

`(~(+ 1 2) ~@[2 1])
; => (3 2 1)

這三個主要用於編寫宏。 您不能在語法引號之外使用~~@

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM