我有一些代码需要先插入db然后再从db中查询。我可以使用嵌套的let
,如下所示:
(let [sql "sql text"]
(clojure.java.jdbc/insert! ...)
(let [query-result (clojure.java.jdbc/query ...)]
(some-code-using query-result)))
或使用一个let
但使用一些虚拟变量,如下所示:
(let [sql "sql text"
dummy (clojure.java.jdbc/insert! ...)
query-result (clojure.java.jdbc/query ...)]
(some-code-using query-result))
哪一个在clojure中更好,更典型?
答案 0 :(得分:3)
“虚拟”变量的规范名称是_
,并且会明确表示您不打算使用该调用的结果。与嵌套的_
电话相比,使用let
也更容易理解。
(let [sql "sql text"
_ (clojure.java.jdbc/insert! ...)
query-result (clojure.java.jdbc/query ...)]
(some-code-using-query-request))
答案 1 :(得分:0)
嵌套let
表单没有任何问题,我会说你的例子中的前者是最可读的,这要归功于更清晰的意图分离。