11.2.4 数组的转换

前面我们仍然是用 Java 的思维方式使用 Scala 的数组. 实际上, Scala 的数组可以有更多新奇的玩法!

从数组或者数组缓冲出发, 对数组做某种意义上的转换是很简单的. 这些转换不会修改原数组, 而是产生一个新的数组.

使用for推导式

package com.atguigu.day11.arr

object ArrayDemo4 {
  def main(args: Array[String]): Unit = {
    var arr = Array(1, 2, 3, 4, 5, 6).toBuffer
    // 使用关键字 yield 会产生一个新的数组缓冲
    var arr2 = for (ele <- arr) yield ele * ele
    println(arr2)
  }
}

说明:

  • 如果是从数组出发, 得到的就是数组, 如果是数组缓冲出发, 得到的就是一个数组缓冲.

  • 结果就是yield后的表达式, 每个元素迭代一次

使用守卫

如果只想处理特别的元素, 可以添加守卫.

package com.atguigu.day11.arr


object ArrayDemo4 {
  def main(args: Array[String]): Unit = {
    var arr = Array(1, 2, 3, 4, 5, 6).toBuffer
    var arr2 = for (ele <- arr  if ele % 2 == 0) yield ele * ele
    println(arr2)
  }
}

说明:

  • 只处理偶数, 奇数的不处理. 注意: if前不需要添加逗号

  • 注意: 这些操作都是产生新的的数组, 不会对原数组或者缓冲带来影响

  • 另外还有一些高阶函数也可以完成这些功能, 后面再了解. 高阶函数的方式更加函数式编程.

Copyright © 尚硅谷大数据 2019 all right reserved,powered by Gitbook
该文件最后修订时间: 2019-07-02 08:12:45

results matching ""

    No results matching ""