使用swap!和reset!在Clojure函数之间有什么区别?我从clojure.core文档中看到它们用于改变原子的值,但我不确定何时使用swap!以及何时使用reset!.
你会在什么情况下使用swap!以及你会使用哪种情况reset!?
[:input {:type "text"
:value @time-color
:on-change #(reset! time-color (-> % .-target .-value))}]
Run Code Online (Sandbox Code Playgroud)
上面的代码是reset!用于按钮的示例
[:input.form-control
{:type :text
:name :ric
:on-change #(swap! fields assoc :ric (-> % .-target .-value))
:value (:ric @fields)}]
Run Code Online (Sandbox Code Playgroud)
而这个按钮使用 swap!
是swap!和reset!互换?
谢谢
我正在尝试在我的heroku dyno上开始我的clojure应用程序,但我在stuartsierra.component/start中继续得到错误.
(defrecord Listener [listener]
component/Lifecycle
(start [component]
(assoc component :listener (yada/listener
["/"
[(view/view-route)
routes/route-handler
["public/" (new-directory-resource (io/file "target/cljsbuild/public") {})]
[true (as-resource nil)]]]
(or (env :port) (get (read-config "resources/config.edn" {:profile :dev}) :webserver))
)))
(stop [component]
(when-let [close (-> component :listener :close)]
(close))
(assoc component :listener nil)))
(defn new-system []
(component/system-map
:listener (map->Listener {})
))
(def system nil)
(defn init []
(alter-var-root #'system
(constantly (new-system))))
(defn start []
(alter-var-root #'system component/start))
(defn stop []
(alter-var-root #'system
(fn [s] (when s (component/stop …Run Code Online (Sandbox Code Playgroud) lein figwheel和lein cljsbuild auto有什么区别,因为我相信它们都可以用来编译clojurescript。
另外,使用一个比另一个有好处吗?
我有一个矢量[[[1 2] [3 4]] [[5 6] [7 8]] [9 10] 11].我想将一个函数应用于此向量,但保留数据结构.
例如,我想为每个数字添加1,但保留数据结构以获得结果[[[2 3] [4 5]] [[6 7] [8 9]] [10 11] 12].这可能吗?
我试过了
(map #(+ 1 %) (flatten [[[1 2] [3 4]] [[5 6] [7 8]] [9 10] 11]))
=> (2 3 4 5 6 7 8 9 10 11 12)
Run Code Online (Sandbox Code Playgroud)
但是你可以看到数据结构不一样.
有没有可能,需要一个函数(2 3 4 5 6 7 8 9 10 11 12)来[[[2 3] [4 5]] [[6 7] [8 9]] [10 11] 12] …
我最近在Cojure Conj 2016上观看了Rich Hickeys的演讲,尽管它非常有趣,但我并没有真正理解clojure.spec你使用它的重点.似乎大多数想法,例如符合,有效等,已经在Clojure中具有类似的功能.
我现在只学习了大约3个月的clojure,所以这可能是由于缺乏编程/ Clojure经验.
clojure.spec和cljs.spec的工作方式与Clojure和Cljs类似,尽管它们不是100%相同,但它们基于相同的基本原则.
我有时间字符串"2017-08-30 09:01:48".有没有办法将时间缩短到最近的小时并返回小时?
所以,如果时间"2017-08-30 09:01:48"会回来9
如果时间"2017-08-30 09:51:48"会回来10
我看了看图书馆,clj-time但我看不到任何可以帮助我的东西
任何帮助将非常感激?
我已将我的 postgres 数据库定义为
(def db {:subprotocol "postgresql"
:subname "//localhost:5432/mydb"
:user "admin"
:password "password"})
Run Code Online (Sandbox Code Playgroud)
我还定义了一个函数
(defn get-users []
(sql/query db ["select * from users"]))
Run Code Online (Sandbox Code Playgroud)
sql在哪里 [clojure.java.jdbc :as sql]
如果我运行,(get-users)我会收到错误
SQLException No suitable driver found for jdbc:postgresql://127.0.0.1:5432/mydb java.sql.DriverManager.getConnection (DriverManager.java:689)
Run Code Online (Sandbox Code Playgroud)
我从其他 Java 帖子中看到我需要使用加载驱动程序 Class.forName("org.postgresql.Driver");
1)这是什么意思?
2) 我如何做到这一点/解决我在 Clojure 中的错误?
我想创建一个函数,当你输入一个数字说5它将返回一个从1到5的所有数字的向量,即[1 2 3 4 5]
到目前为止,我在
(defn counter [number]
(let [x 1
result []]
(when (<= x number)
(conj result x)
(inc x))))
Run Code Online (Sandbox Code Playgroud)
现在它将1放入向量中,但我想现在说(inc x)并再次运行.我必须使用复发吗?
任何帮助深表感谢
我如何组合两个列表说'(1 2 3 4)和'(:a :b :c :d)得到
(1 :a 2 :b 3 :c 4 :d)
因为我不能这样做,concat因为这会将第二个列表添加到第一个列表的末尾.
我想过做点什么
user=> (def a '(1 2 3 4))
user=> (def b '(:a :b :c :d))
user=> (def x (apply conj (second (split-at 1 a)) (nth b 0) (reverse (first (split-at 1 a)))))
(1 :a 2 3 4)
user=> (def y (apply conj (second (split-at 3 x)) (nth b 1) (reverse (first (split-at 3 x)))))
(1 :a 2 :b …Run Code Online (Sandbox Code Playgroud) 我有一个定义:
(def class1 {:people ({:name "John" :age "25"} {:name "Harry" :age "23"} {:name "Peter" :age "24"})})
Run Code Online (Sandbox Code Playgroud)
我想要的结果是一个看起来像的矢量
[["John" "25"]
["Harry" "23"]
["Peter" "24"]]
Run Code Online (Sandbox Code Playgroud)
如果我打电话(map (-> class1 :people) [:name :age])
然后我得到结果("彼得""24").为什么我只从最后一个hashmap而不是其他hashmap获取值?
如果我然后打电话(into [] (map (-> class1 :people) [:name :age]))
然后我得到结果["彼得""24"]
我需要做的是into在另外两个哈希映射上再次运行该函数,然后将3个结果放入向量中,但我不知道如何做到这一点.
我的问题是,当我运行时(map (-> class1 :people) [:name :age]),我得到最后一个哈希图.我相信你必须做一些事情,比如在每个哈希映射上运行一个函数,一次一个,然后每次将该向量放到另一个向量中以获得我正在寻找的表单.
任何帮助将非常感激