首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用约简来更新地图

如何使用约简来更新地图
EN

Stack Overflow用户
提问于 2014-03-22 14:36:21
回答 1查看 130关注 0票数 0

我有一个字符串"101,R:102,R:301,L:302,L:999",我想编写一个函数,它处理字符串并返回如下所示的映射:

代码语言:javascript
复制
{
  :left     [301 302],
  :right    [101 102],
  :unknown  [999]
}

下面是我所写的,但我仍然停留在减函数上。任何帮助都将不胜感激。谢谢。

代码语言:javascript
复制
(defn process
  [data return-hash]
  (let [id-side (str/split data #",")
        id (first id-side)
        side (second id-side)]
    (cond
      (= "L" side) (update-in return-hash [:left] conj id)
      (= "R" side) (update-in return-hash [:right] conj id)
      :else (update-in return-hash [:unknown] conj id)
      )
    ))

(defn get-hash
  [data]
  (let [id-side-array (str/split data #":")]
    (reduce
      // a function calling process() method to update the map
      id-side-array)
    ))

(get-hash "101,R:102,R:301,L:302,L:999") 
=> 
{
  :left     [301 302],
  :right    [101 102],
  :unknown  [999]
} 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-22 15:00:43

你就快到了:

  1. 改变process的参数顺序,使return-hash优先;
  2. (fnil conj [])调用中使用conj代替conj
  3. (reduce process {} id-side-array)中使用get-hash
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22578966

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档