首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Clojure:地图中的圆形bigInt

Clojure:地图中的圆形bigInt
EN

Stack Overflow用户
提问于 2017-07-25 17:11:12
回答 2查看 100关注 0票数 1

我需要一些地图方面的帮助。使用jdbc/query从数据库中获取数据后,结果如下所示:

代码语言:javascript
复制
({:product_id 1, :name product1, :rating 3.000M}
 {:product_id 2, :name product2, :rating 1.333M}
 {:product_id 3, :name product3}, :rating nil)

我想用Selmer显示所有内容,但我只想要逗号后面的1个数字。如下所示:

代码语言:javascript
复制
({:product_id 1, :name product1, :rating 3.0}
 {:product_id 2, :name product2, :rating 1.3}
 {:product_id 3, :name product3}, :rating nil)

我发现了如何迭代映射,但我不知道如何更改特定值。查询数据保存在data

代码语言:javascript
复制
(doseq [keyval data]
  (doseq [keyval2 keyval]
    (doseq [keyval3 keyval2]
      (prn keyval3))))

你能帮我创建一个新的data变量吗?谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-25 17:40:33

代码语言:javascript
复制
(defn round2
  "Round a double to the given precision (number of significant digits)"
  [precision d]
  (let [factor (Math/pow 10 precision)]
    (/ (Math/round (* d factor)) factor)))

(map #(assoc % :rating (when-some [r (:rating %)] (round2 1 r)))
    '({:product_id 1, :name 'product1, :rating 3.000M}
      {:product_id 2, :name 'product2, :rating 1.333M}
      {:product_id 3, :name 'product3, :rating nil}))
票数 1
EN

Stack Overflow用户

发布于 2017-07-25 18:03:05

clojure数据是不可变的,所以您不能以一种常见的方式更新它。相反,您可以复制数据,并使用clojure的数据操作函数添加所需的更改。更好的介绍可以在这里找到:http://www.braveclojure.com/functional-programming/

所以你要做的就是这样

代码语言:javascript
复制
user> (defn round-to [^Double num places] (when num (Math/round num)))
#'user/round-to ;; not-a-real-round-to (simplified for brevity)

user> (def data '({:product_id 1, :name product1, :rating 3.000M}
                  {:product_id 2, :name product2, :rating 1.333M}
                  {:product_id 3, :name product3, :rating nil}))
#'user/data

user> (map #(update % :rating round-to 2) data)
;;=> ({:product_id 1, :name product1, :rating 3} 
;;    {:product_id 2, :name product2, :rating 1} 
;;    {:product_id 3, :name product3, :rating nil})
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45298792

复制
相关文章

相似问题

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