Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dictionary 在clojure中创建词典_Dictionary_Clojure_Key - Fatal编程技术网

Dictionary 在clojure中创建词典

Dictionary 在clojure中创建词典,dictionary,clojure,key,Dictionary,Clojure,Key,我想创建一个已知键和未知变量量的json表示: (defn test1 [var1 & var2] (print json/write-str :key1 var1 var2)) (defn -main [& args] (test1 "key1_val" {:key2 "val2" :key3 "val3"})) 它返回以下内容: :key1 key1_val ({:key2 val2, :key3 val3}) 我希望它是一本单独的字典。我想知道,返回的方法

我想创建一个已知键和未知变量量的json表示:

(defn test1 [var1 & var2]
  (print json/write-str :key1 var1 var2))

(defn -main [& args]
  (test1 "key1_val" {:key2 "val2" :key3 "val3"}))
它返回以下内容:

  :key1 key1_val ({:key2 val2, :key3 val3})
我希望它是一本单独的字典。我想知道,返回的方法真的是我想要的吗?我想不是因为第二部分在括号里

(打印json/write str:key1 var1 var2)

这将打印
json/write str
的函数值,后跟每个键的值。在clojure中,如果要运行函数,则必须应用它,这通常是通过将其包装在括号中来实现的

接下来,
write str
接受多个参数,但唯一转换为json的参数是第一个,因此需要将数据包装到数据结构中

我不确定您是否真的希望数据结构化,但我认为类似这样的东西更接近:

(json/write str{:key1[var1 var2]})


另外,作为一个小提示,代码没有返回
:key1key1val({:key2val2,:key3val3})
,它打印了字符串“:key1key1val({:key2val2,:key3val3})”,并返回
nil
,因为println总是返回
nil

我的目标是获得“{key1:val1,key2:val2,key3:val3}”。您的解决方案返回“{:key1>[key1_val({:key2 val2,:key3 val3})]}在我的示例中,“var2”在这里
[var1&var2]
是字典类型,var1是字符串(参数列表
[var1&var2]中的键“key1_val”的值)
var2保证永远不会是字典。它将是一个列表。这就是
&
所做的。那么如何将它转换为字典呢?一种方法是使用
[var1 var2]
作为参数列表。