scala 系列 ---- scan,scanLeft,scanRight的使用详解用法及代码示例

悠悠 2023-01-08 12:29 213阅读 0赞

scan[B >: A, That](z: B)(op: (B, B) ⇒ B)(implicit cbf: CanBuildFrom[List[A], B, That]): That

由一个初始值开始,从左向右,进行积累的op操作

scanLeft,scanRight

scanLeft: scanLeft[B, That](z: B)(op: (B, A) ⇒ B)(implicit bf: CanBuildFrom[List[A], B, That]): That

scanRight: scanRight[B, That](z: B)(op: (A, B) ⇒ B)(implicit bf: CanBuildFrom[List[A], B, That]): That

scanLeft: 从左向右进行scan函数的操作,scanRight:从右向左进行scan函数的操作

  1. var scanVector = (1 to 10).scan(0)(_ + _)
  2. println(scanVector.getClass)
  3. println(scanVector)
  4. println("-------------------------------------------------")
  5. var slVector = (1 to 10).scanLeft(0)(_ + _)
  6. println(slVector.getClass)
  7. println(slVector)
  8. println("-------------------------------------------------")
  9. var srVector = (1 to 10).scanRight(0)(_ + _)
  10. println(srVector.getClass)
  11. println(srVector)
  12. 输出:
  13. class scala.collection.immutable.Vector
  14. Vector(0, 1, 3, 6, 10, 15, 21, 28, 36, 45, 55)
  15. -------------------------------------------------
  16. class scala.collection.immutable.Vector
  17. Vector(0, 1, 3, 6, 10, 15, 21, 28, 36, 45, 55)
  18. -------------------------------------------------
  19. class scala.collection.immutable.Vector
  20. Vector(55, 54, 52, 49, 45, 40, 34, 27, 19, 10, 0)

发表评论

表情:
评论列表 (有 0 条评论,213人围观)

还没有评论,来说两句吧...

相关阅读