zoukankan      html  css  js  c++  java
  • 高阶LOOP

    <实用Common.Lisp编程> 第22章 高阶loop
     
    1.loop的组成部分
            你可以在一个loop中做下列事情:
    • 以数值或多种数据结构为步长来做循环;
    • 在循环的过程中收集、计数、求和以及求最大值或最小值;
    • 执行任意Lisp表达式;
    • 决定何时终止循环;
    • 条件执行上述内容。
            另外,loop还提供了用于下列事务的语法:
    • 创建用于循环内部的变量;
    • 指定任意Lisp表达式在循环开始前和结束后运行。
     
    2.迭代控制
       大多数所谓的迭代控制子句都以循环关键字for或是它的同义词as开始,后接一个变量的名字。变量名后面的内容取决于for子句的类型。

        1.计数型循环

      (loop for i upto 10 collect i) 
      (loop for i from 0 downto -10 collect i) 
      2.循环集合和包
       用于迭代列表的for子句只支持两个介词短语,in和on。
      (loop for i in (list 10 20 30 40) collect i) -> (10 20 30 40) 
      (loop for x on (list 10 20 30) collect x) -> ((10 20 30) (20 30) (30)) 
      3.等价-然后迭代
      (loop repeat 5  for x = 0 then y for y = 1 then (+ x y)  collect y) -> (1 2 4 8 16)
     
    3.局部变量 局部变量可以使用with子句来声明。  
        with var [ = value-form] 
        var将成为一个局部变量的名字,它会在循环结束时 被删除。如果with子句含有一个=value-form部分,那么变量将会在循环的首次迭代之前初始化为value-form的值。
     
    4.解构变量
      CL-USER> (loop for (a b) in '((1 2) (3 4) (5 6))  do (format t "a: ~a; b: ~a~%" a b))
      a: 1; b: 2  
      a: 3; b: 4  
      a: 5; b: 6  
      NIL  
     
    5.值汇聚     
       可用的动词包括collect、append、nconc、count、sum、maximize和minimize。
  • 相关阅读:
    web 学习资源整理
    CodeSmith 学习资料收集
    常用 T_SQL 语句
    SQL Server 2000查询分析器自定义查询快捷键
    插入标识列 identity_insert
    c# 上传FTP文件
    (.Net 3.5Sp1)WebForm使用System.Web.Routing
    SPQuery.ViewAttributes
    ChatterBot之linux下安装mongodb 02
    linux端口开放指定端口的两种方法
  • 原文地址:https://www.cnblogs.com/arcticant/p/2964264.html
Copyright © 2011-2022 走看看