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
前不需要添加逗号注意: 这些操作都是产生新的的数组, 不会对原数组或者缓冲带来影响
另外还有一些高阶函数也可以完成这些功能, 后面再了解.
高阶函数的方式更加函数式编程 .