English  
     
 

 

主页   新闻   白皮书   文档   出版物   下载   源码   方案   资质
 
 
 
 
  主页 | 培训    
 
 

Fuxi语言的循环问题

    和过程型语言不同, Fuxi语言没有象C、JAVA等那样的for循环语句。但是程序中不可能没有重复执行的过程,Fuxi语言是怎样解决这一问题的呢?

    Fuxi语言是一种多范型程序设计语言,具有强大的表处理功能。我们可以利用其表扫描函数scan来实现循环功能。在Fuxi的基本类库中,有一个Iterator类,它是一个成员为int型的整数表。Iterator类包括以下几个构造函数:

     
   public Iterator( int nCount ) = bool
 public Iterator( int iStart, int iEnd ) = bool
 public Iterator( int iStart, int iEnd, int iStep ) = bool
 
     

    我们可以定义一个Iterator对象,设定循环的次数、范围,然后对该Iterator进行扫描,便可实现循环功能。例如:

     
 

import fuxi.*

 

public class IterApp: Applet

{

     Iterator i(10)

     public Activate() =

              i.scan(){ System.Console.Println( "Hello,World!" ) }

}

 
     

该程序就可以循环打印10次“Hello, World!”

    一个值得注意的问题是: scan()是函数, 是一个高阶函数, 其执行的结果是一个值。这一点和过程型语言(如C、JAVA等)的for 循环语句不同。上面的例子是scan()函数的一个最简单的应用。scan()函数的完整定义如下:

     
  <表变量名>.scan(<成员变量名>, <运算符>, <初始值>, <条件>) {...}  
     

scan()函数的含义是,把一个表的成员依次的取出,如果<条件>为true,则作用到后面的{...}上,并把作用的结果应用到scan()函数所指定的运算符上;如果<条件>false,直接退出,并返回结果。

    在缺省的情况下,<运算符>为&&;<初始值>为true;而<条件>为true。对于不同的运算符,系统定义了不同的<初始值>:&&为true, ||为false,其它为0。

    如果我们想计算1..100的和,就可以这样编程:

     
 

import fuxi.*

 

public class 累加应用: Applet

{

     public Activate() =

     let

     {

          Iterator 循环量 = Iterator(1, 100)

     }

     in

     {

           System.Console.Println( "1 +...+ 100 = ",

                               循环量.scan(x, +){x} }

     }

 
     

 

 
   
   
 

友情链接:深圳市触品科技有限公司 www.touchbuy.cn

友情链接:深圳市趋高智能系统有限公司 www.hitrend.com

友情链接:深圳市触品便利店有限公司 www.touchstore.cn

关于我们  联系我们  加入我们

©2006-2019 fuxi.org, 版权所有. 粤ICP备11003046号