小编leo*_*bot的帖子

Clojure/ClojureScript中的不区分大小写的过滤器

我有这个功能:

(defn list-data [alist filter-text]
 (filter (fn [x] (if (nil? filter-text) true
                     (> (.indexOf x filter-text) -1))) alist))

(list-data ["Lion" "Zebra" "Buffalo" "Antelope"] "a")
;=> ("Zebra" "Buffalo")
Run Code Online (Sandbox Code Playgroud)

是否有更惯用的方式编写此函数并尊重我不想要区分大小写的过滤器这一事实,这意味着我希望(list-data ["Lion" "Zebra" "Buffalo" "Antelope"] "a")返回以下内容:

;=> ("Zebra" "Buffalo" "Antelope")
Run Code Online (Sandbox Code Playgroud)

谢谢!

(这需要在.cljs文件中工作)

clojure clojurescript

4
推荐指数
1
解决办法
2903
查看次数

如何用clojure阅读我的电子邮件?

我想用clojure解析来自我的IMAP收件箱的邮件.

我知道有clojure邮件库,但我没有Gmail帐户.谢谢!

clojure

3
推荐指数
1
解决办法
913
查看次数

如何在clojure中将一个键分配给一个向量的每个项目?

如果我这样做,我可以使用什么功能:

(the-function :a [1 2 3 4 5])

我明白了: [{:a 1} {:a 2} {:a 3} {:a 4} {:a 5}]

谢谢你的回答!

clojure

2
推荐指数
1
解决办法
101
查看次数

Clojure:删除嵌套数据结构中所有nil项的最简单方法是什么?

假设我们有这个嵌套的向量:

(def coll [nil [["this" nil "this"] nil] nil "this"])
Run Code Online (Sandbox Code Playgroud)

你会如何设计一个remove-nil函数,以便所有nil消失?

(remove-nil coll)
;> [[["this" "this"]] "this"]
Run Code Online (Sandbox Code Playgroud)

null clojure

2
推荐指数
1
解决办法
1408
查看次数

在ClojureScript中,延迟`:on-click`事件并仅在未触发`:on-double-click`事件时触发

:on-click如果:on-double-click事件被触发,有什么简单的方法来延迟事件首先查看?

[:div {:on-click "listen to double-click event, within 500ms, 
             if so on-double-click-fn, 
             if not, on-click-fn"
       :on-double-click "on-click-fn"}]
Run Code Online (Sandbox Code Playgroud)

谢谢!

第一次尝试:

(defn sleep [timeout]
  (let [maxtime (+ (.getTime (js/Date.)) timeout)]
    (while (< (.getTime (js/Date.)) maxtime))))

[:div {:on-click #(do (sleep 500) (print "single-clicked"))
       :on-double-click #(print "double-clicked")}]
Run Code Online (Sandbox Code Playgroud)

第二次尝试:

(def state (atom {:click-count 0}))

(defn handle-click [e click-fns-map]
  (do (swap! state update :click-count inc)
      (sleep 500)
      (let [click-count (get @state :click-count)]
        (swap! state assoc :click-count 0)
        (cond
          (= click-count 1) ((:on-single-click click-fns-map) …
Run Code Online (Sandbox Code Playgroud)

clojure clojurescript reagent

2
推荐指数
1
解决办法
416
查看次数

将列表项分发给clojure中的变量

当我通过这个功能

(into [] 
      (map #(+ %1 %2)
           [1 2]
           [5 6]))
Run Code Online (Sandbox Code Playgroud)

我得到这个结果: [6 8]

我该怎么做才能得到这个:[6 7 7 8]保持这个#(+ %1 %2)

map在这种情况下似乎不是正确的功能.

clojure

1
推荐指数
1
解决办法
57
查看次数

在Clojure中分发和合并哈希映射元素

什么是最快的方式来转换这个集合:

[[{:a 1} {:a 2} {:a 3}] [{:b 4} {:b 5} {:b 6}] [{:c 7} {:c 8} {:c 9}]]
Run Code Online (Sandbox Code Playgroud)

进入这个系列?:

[{:a 1, :b 4, :c 7} {:a 2, :b 5, :c 8} {:a 3, :b 6, :c 9}]
Run Code Online (Sandbox Code Playgroud)

我想出了这个,但我仍觉得它可能更短:

(map (partial apply merge) 
     (apply map vector collection))
Run Code Online (Sandbox Code Playgroud)

请注意,这些数字是随机选取的,只是为了表明每个val的内容是唯一的......

clojure

1
推荐指数
1
解决办法
107
查看次数

基于特定键中的值在集合中复制映射

所以我有这个:

[{:a ["x" "y"], :b "foo"}
 {:a ["x" "y" "z"], :b "bar"}]
Run Code Online (Sandbox Code Playgroud)

想要这个:

[{:a "x", :b "foo"} 
 {:a "y", :b "foo"} 
 {:a "x", :b "bar"}
 {:a "y", :b "bar"}
 {:a "z", :b "bar"}]
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

clojure

1
推荐指数
1
解决办法
49
查看次数

将字符串数组更新为 LOWER(小写)

如何更新作为字符串数组的列以将每个字符串转换为小写?

像这样将列的所有值更新为小写,但对于字符串数组。

数据示例:

id | tags                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
---+---------------------------------------------------------------
58 | 
87 | {Pasta}
94 | {trendy,Supper,"Restaurant casual"}
...
Run Code Online (Sandbox Code Playgroud)

sql postgresql

1
推荐指数
1
解决办法
994
查看次数

clojure:可以回退到第一个项目的下一个元素

我想创建一个getnext fn,它在coll中查找元素,当匹配时,返回下一个元素.此外,如果最后一个元素作为参数传递,它应该返回第一个元素.

(def coll ["a" "b" "c" "d"])

(defn get-next [coll item] ...)

(get-next coll "a") ;;=> "b"
(get-next coll "b") ;;=> "c"
(get-next coll "c") ;;=> "d"
(get-next coll "d") ;;=> "a" ; back to the beginning
Run Code Online (Sandbox Code Playgroud)

谢谢!

clojure

0
推荐指数
1
解决办法
209
查看次数

标签 统计

clojure ×9

clojurescript ×2

null ×1

postgresql ×1

reagent ×1

sql ×1