当前位置: 首页 > 工具软件 > Steam View > 使用案例 >

Scala基础——stream和view

邢璞
2023-12-01

Stream

   /*
    * steam
    * 是一个集合,是lazy的,可以用于存放无穷多个元素
    * 使用#::得到一个stream
    * */
    //initNum是传入的初始值
    //initNum+1是通项公式
    //不断回调函数numsForm
    def numsForm(initNum:BigInt):Stream[BigInt]={
      initNum #:: numsForm(initNum+1)
    }
    //传递值并打印
    val numStream = numsForm(0)
    //输出Stream(0, ?)
    println(numStream)
    //拿到除了第一个元素外的所有元素的集合:Stream(1, ?)
    println(numStream.tail)
    //每使用一次,就调用numsForm一次:Stream(2, ?)
    //tail方法会出发stream的使用,会在调用.tail方法的stream上新增元素
    println(numStream.tail.tail)
    val s1= numStream.tail
    val s2 = s1.tail
    //输出Stream(1, 2, ?)
    println(s1)
    //输出Stream(2, ?)
    println(s2)

view

   /*
    * 视图View
    * 也是Lazy的,是有限的
    * view不会缓存数据,每次都要重新计算
    * 打印其中的回文数
    * */
    val viewSquares = (1L to 100000L)
      .view
      .map(x =>x).filter(x => {
      x.toString == x.toString.reverse
    })
    //打印第三个数字
    println(viewSquares(3))
    //打印所有元素
    println(viewSquares.mkString(" "))
    for(x <- viewSquares){
      print(x + ",")
    }
 类似资料: