【发布时间】:2018-02-09 10:39:17
【问题描述】:
我今天想知道我是否有一个数字列表。 ClojureScript 中是否有一个函数可以按位值返回由数字组成的数字? (我不是指list(),只是一些数字)
例如:
我有一些数字 1、2、3,我正在寻找将其转换为 123(一百二十三)的函数。
我以为我通过read-string找到了解决方案
(read-string (str 1 2 3))
;=> 123
但遗憾的是,如果我想在下面讨论的函数中使用它,它就不能很好地工作。
我有一个“函数式”映射,其中键是向量,值是数字。像这样: {[0 0] 0, [0 1] 1, ... [4 5] 45, ... [9 9] 99}
我可以在这张地图上使用get 函数的唯一方法是:
(get {[0 2] 2} [0 2])
;=> 2
; or
(get {[4 5] 45} [4 5])
;=> 45
这很糟糕,但它确实有效。为了让它看起来更好,我尝试在我使用read-string 的地方定义一个函数:(读取/指的是cljs.reader)
(defn get-oxo [x y]
(get {[x y] (read/read-string (str x y))} [x y]))
;So i can use it like this for e.g.:
(get-oxo 4 5)
;=> 45
它还返回不在地图中的值:
(get-oxo 112 358)
;=> 112358
我想问题是这样get-oxo返回的不是配对键的值,而是由x y构造的数字...
所以问题是如何修复它以返回配对键的值,而不是从我给函数的数字构造的数字?
(如果我想生成一个具有更广泛数字范围的地图,例如不仅仅是 0-9 而是 0-99,还有另一个问题。这样get-oxo 的算法不正确。我使用讨论的函数在:ClojureScript zipmap tricks me or what?)。
【问题讨论】:
-
如果地图不是
get函数的参数,你想如何从地图中获取项目?我的意思是你正在获得你产生的价值。就是这样。似乎您对编程有根本的误解,而不仅仅是 clojure 编程。 -
如果您只对它的键感兴趣而不对它的值感兴趣,那么使用地图的意义何在?
-
@TaylorWood 我稍后会定义值,还不清楚。
标签: clojure clojurescript