• [织梦吧]唯一域名:www.dedecms8.com,织梦DedeCMS学习平台.

当前位置: > 网页制作 > JavaScript >

stream.js :一个新的JavaScript数据结构

来源: www.dedecms8.com 编辑:织梦吧 时间:2012-02-07点击:
   

   stream.js 是一个很小、完全独立的Javascript类库,它为你提供了一个新的Javascript数据结构:streams.

  1. <script src='stream-min.js'></script> 

  

  streams是什么?

  Streams 是一个操作简单的数据结构,很像数组或链接表,但附加了一些非凡的能力。

  它们有什么特别之处?

  跟数组不一样,streams是一个有魔法的数据结构。它可以装载无穷多的元素。是的,你没听错。他的这种魔力来自于具有延后(lazily)执行的能力。这简单的术语完全能表明它们可以加载无穷多的元素。

  入门

  如果你愿意花10分钟的时间来阅读这篇文章,你对编程的认识有可能会被完全的改变(除非你有函数式编程的经验!)。请稍有耐心,让我来先介绍一下streams支持的跟数组或链接表很类似的基本功能操作。然后我会像你介绍一些它具有的非常有趣的特性。

  Stream 是一种容器。它能容纳元素。你可以使用 Stream.make 来让一个stream加载一些元素。只需要把想要的元素当成参数传进去:

  1. var s = Stream.make( 10, 20, 30 );  
  2. // s is now a stream containing 10, 20, and 30   

  足够简单吧,现在 s 是一个拥有3个元素的stream: 10, 20, and 30; 有顺序的。我们可以使用s.length() 来查看这个stream的长度,用 s.item( i ) 通过索引取出里面的某个元素。你还可以通过调用 s.head() 来获得这个stream 的第一个元素。让我们实际操作一下:

  1. var s = Stream.make( 10, 20, 30 );   
  2. console.log( s.length() );  // outputs 3   
  3. console.log( s.head() );    // outputs 10   
  4. console.log( s.item( 0 ) ); // exactly equivalent to the line above   
  5. console.log( s.item( 1 ) ); // outputs 20   
  6. console.log( s.item( 2 ) ); // outputs 30   

  本页面已经加载了这个 stream.js 类库。如果你想运行这些例子或自己写几句,打开你的浏览器的Javascript控制台直接运行就行了。

  我们继续,我们也可以使用 new Stream() 或 直接使用 Stream.make() 来构造一个空的stream。你可以使用 s.tail() 方法来获取stream里除了头个元素外的余下所有元素。如果你在一个空stream上调用 s.head() 或 s.tail() 方法,会抛出一个异常。你可以使用 s.empty() 来检查一个stream是否为空,它返回 true 或 false。

  1. var s = Stream.make( 10, 20, 30 );   
  2. var t = s.tail();         // returns the stream that contains two items: 20 and 30   
  3. console.log( t.head() );  // outputs 20   
  4. var u = t.tail();         // returns the stream that contains one item: 30   
  5. console.log( u.head() );  // outputs 30   
  6. var v = u.tail();         // returns the empty stream   
  7. console.log( v.empty() ); // prints true   

  这样做可以打印出一个stream里的所有元素:

  1. var s = Stream.make( 10, 20, 30 );   
  2. while ( !s.empty() ) {   
  3.     console.log( s.head() );   
  4.     s = s.tail();   
  5. }   

About D8

  • ©2014 织梦吧(d8) DedeCMS学习交流平台
  • 唯一网址 www.DedeCMS8.com 网站地图
  • 联系我们 1170734538@qq.com ,  QQ