package com.shujia
object Demo9Func3 {
def main(args: Array[String]): Unit = {
// 创建一个数组
val array: Array[Int] = Array[Int](1, 2, 3, 4, 5, 6, 7)
// 遍历数组 Java的思想
var index: Int = 0
while (index < array.length) {
println(array(index))
index += 1
}
// 让每一个array中的元素扩大两倍
// 遍历数组
// Java的思想实现
var index2: Int = 0
while (index2 < array.length) {
array(index2) = array(index2) * 2
index2 += 1
}
println(array)
// mkString 相当于Python中的join方法
// 会将array中的每一个元素与指定的分隔符拼接 最终得到一个字符串
// 与split方法相反
println(array.mkString("|"))
// Any是任意类型的基类
// AnyRef:任意引用类型的基类
// AnyVal:任意值类型的基类
val i: Int = 10
val str: AnyRef = "abc"
// Scala的思想
// foreach方法:需要传入一个函数f:参数类型为Int,返回值类型为Unit
// foreach方法会将array中的每一个元素依次作为参数传递给函数f
// println是一个函数:参数类型为Any,返回值类型为Unit
// 遍历
array.foreach(println)
println("*" * 100)
// 其他遍历方式
for (elem <- array) {
println(elem)
}
/**
* Java中的遍历方式
* for(int i =0;i<array.length;i++){
* System.out.println(array(i))
* }
*/
// 造成数组越界
// [0,array.length]
// for (i <- 0 to array.length) {
// println(array(i))
// }
// [0,array.length)
for (i <- 0 until array.length) {
println(array(i))
}
for (i <- Range(0, array.length)) {
println(array(i))
}
println("*" * 100)
// 让每一个array中的元素扩大两倍
def extend2(i: Int): Unit = {
println(i * 2)
}
// foreach方法没有返回值 无法得到扩大之后的array
array.foreach(extend2)
def extend2_1(i: Int): String = {
(i * 2).toString
}
// map方法接收一个函数f:参数为Int类型(与array中每个元素的类型有关),返回值类型任意(自己定义)
// map方法同foreach方法的差异在于有没有返回值
// map方法会将array中的每一个元素作为参数传给函数f,最后会将变换后的结果作为新的数组返回
val array2: Array[String] = array.map(extend2_1)
println(array2.mkString(","))
// 使用匿名函数简化定义
println(array.map(_ * 2).mkString(","))
}
}
scala中函数编程思想之函数作为参数的使用(三)
最新推荐文章于 2024-10-09 17:07:03 发布