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
从clojure中的数组构建hashmap_Clojure_Hashmap_Zipmap - Fatal编程技术网

从clojure中的数组构建hashmap

从clojure中的数组构建hashmap,clojure,hashmap,zipmap,Clojure,Hashmap,Zipmap,首先,我是12月5日在铁场学习Java后端工程的学生。本课程由大约60%的Java、25%的JavaScript和15%的Clojure组成 我得到了以下问题(在评论中概述): 使用zipmap时,我也遇到了类似的问题,但我确信这一次我遗漏了一些东西。代码已编译,但无法运行 具体来说,我无法更新'if'的false子句中的hashmap索引 我已经在REPL中测试了这个函数的所有组件,它们是独立工作的。但我正在努力把它们放在一起 以下是调用单词列表的代码,供您参考 (let [word-li

首先,我是12月5日在铁场学习Java后端工程的学生。本课程由大约60%的Java、25%的JavaScript和15%的Clojure组成

我得到了以下问题(在评论中概述):

使用
zipmap
时,我也遇到了类似的问题,但我确信这一次我遗漏了一些东西。代码已编译,但无法运行

具体来说,我无法更新'if'的false子句中的hashmap索引

我已经在REPL中测试了这个函数的所有组件,它们是独立工作的。但我正在努力把它们放在一起

以下是调用单词列表的代码,供您参考

  (let [word-list ["aardvark" "apple" "zamboni" "phone"]]
    (printf "index-words(%s) -> %s\n" word-list (index-words word-list)))

我的希望不是从社区得到一个有效的解决方案,而是得到一些提示,让我的大脑朝着正确的方向移动。

函数
assoc
不会修改
索引。您需要使用
assoc
返回的新值。对于
conj
,情况也是如此:它不会修改您传递给它的映射

我希望,这个答案和你们期望得到的答案是一样的:只是一个你们的问题所在的指针

顺便说一句:如果您可以使用
持久列表
,当使用
减少
而不是
循环
重复
时,这将变成一行。一个有趣的功能可能是
中的更新

享受Clojure带来的乐趣。

该功能满足您的需求

  • 您可以使用
    first
    作为其判别函数参数。信息技术 返回字符串的第一个字符,如果没有,则返回
    nil
    (第一个单词)
    (子单词01)
    简单
  • 使用
    dissoc
    删除键
    nil
    的条目


在clojure中很少需要使用显式
循环
s。大多数常见的控制模式都是在函数中捕获的,如
groupby
。此类函数具有函数和可能的集合参数。最常见的例子是
map
reduce
。这本书对他们来说是一本非常有用的指南

这正是我想要的答案。我将继续调查和试验。我会在这个问题有效的时候用我的最终解决方案来更新我的问题。所以我一直在玩弄这个问题,并取得了一些进展,但我被卡住了……”(reduce conj{word list)'产生'=>{aardvark''zamboni''apple''phone'}'但我的目标是'{a'[“aardvark”“apple”],“z”[“zamboni”],“p”[“phone”]}或'.{a[“aardvark”“apple”],:z[“bonzami”],:p[“phone”]}@cptully
,这是一组独特的元素集合。您需要一个哈希映射,其中包含值
{:a1,:b2}
@cptully的键,这需要一个更复杂的reduce函数。请记住,
reduce
接受一个fn,它包含两个参数:累加器(以及最终结果)和当前项。您可以为此编写自己的函数。标准函数
频率
的来源可能会给您带来很大的启发。
  (let [word-list ["aardvark" "apple" "zamboni" "phone"]]
    (printf "index-words(%s) -> %s\n" word-list (index-words word-list)))