Clojure for

for
(for seq-exprs body-expr)
 
列表内涵逻辑,接收一组 ( 一个或多个 ) 绑定 form( binding-form )/ 集合表达式( collection-expr )对,每个绑定 form( binding- form )/ 集合表达式( collection-expr )对后面跟着 0 个或多个 modifier ,最后获得一个求值表达式表示的惰性序列。
 
这里的 seq-exprs 形式为:
[ binding-form collection-expr
  modifier modifier modifier ]
 
<!--[if ppt]--> <!--[endif]--> 或者多个的表现形式为: 
[ binding-form collection-expr
  modifier modifier modifier
  binding-form collection-expr
  modifier modifier modifier
 
  binding-form collection-expr
  modifier modifier modifier ]
 
<!--[if ppt]--> <!--[endif]--> 例子: 
user=> (for [x [0 1 2 3 4 5]
  #_=>       :let [y (* x 3)]
  #_=>       :when (even? y)]
  #_=>   y)
(0 6 12)
 
user=> (for [x '(0 1 2 3 4 5)
  #_=>     :let [y (* x 3)]
  #_=>     :when (even? y)]
  #_=>  y)
(0 6 12)
<!--[if ppt]--> <!--[endif]-->
 
再来个例子:
user=> (for [x [0 1 2 3 4 5]
  #_=>       y [0 1 2 3]
  #_=>       :let [z (* x y)]]
  #_=>   z)
(0 0 0 0 0 1 2 3 0 2 4 6 0 3 6 9 0 4 8 12 0 5 10 15)
 
 
再来个例子:
user=> (for [x [0 1 2 3 4 5]
  #_=>       :let [x (* x 2)]
  #_=>       y [0 1 2 3]
  #_=>       :let [z (* x y)]]
  #_=>   z)
(0 0 0 0 0 2 4 6 0 4 8 12 0 6 12 18 0 8 16 24 0 10 20 30)
 
 
 
 
 

猜你喜欢

转载自lobin.iteye.com/blog/2326243