Clojureでループ:let
を使用するときの修飾子の意味は何ですか?for
2 に答える
9
:let
let特殊形式で定義できるのと同じ意味で、名前付きの値を定義できます。
(for [i (range 10)
:let [x (* i 2)]]
x) ;;=> (0 2 4 6 8 10 12 14 16 18)
と同等です:
(for [i (range 10)]
(let [x (* i 2)]
x)) ;;=> (0 2 4 6 8 10 12 14 16 18)
:when
(または)と組み合わせて使用する場合を除く:while
:
(for [i (range 10)
:let [x (* i 2)]
:when (> i 5)]
x) ;;=> (12 14 16 18)
(for [i (range 10)]
(let [x (* i 2)]
(when (> i 5) x))) ;;=> (nil nil nil nil nil nil 12 14 16 18)
于 2013-01-04T12:53:20.437 に答える
1
:let
のようなリスト内包内にバインディングを作成するために使用できますlet
。
clojureドキュメントの例を引用するには:
user=> (for [x [0 1 2 3 4 5]
:let [y (* x 3)]
:when (even? y)]
y)
(0 6 12)
y
秘訣は、次のようなものを書く代わりに、:while
と:when
修飾子で使用できるようになったことです。
user=> (for [x [0 1 2 3 4 5]
:when (even? (* x 3))]
(* x 3))
于 2013-01-04T12:54:06.750 に答える