Scala高阶函数(4)

1.map

(1)作用:map表示对集合中的每一个元素都做一个操作

(2)例如:

   //map这个表示对集合中中的每一个元素都做一个操作,加减乘除啥的
    val l=List(1,2,3,4,5,6,7,8,9)
    //List里面它类型推导所以他自己是明确知道这是一个Int的类型,并且他只有一个参数
    //println(l.map((x:Int)=>x*2))
   /* println( l.map((x:Int)=>x*2))*/
//println(l.map(x=>x*2))
    println(l.map(_ * 2))

上图得知道步骤如何来的,l.map((x:Int)=>x*2)    l.map(_ * 2)//用个占位符,只有一个参数,类型单一。

(3)l.map(_*2).foreach(println)

foreach他就是一个遍历,迭代的过程。你可以在里面做其他操作。

2.filter

(1)作用:这个函数就是传进一个参数,输出Bollean类型,就是一个判断啥的

take就是取出集合前几个值

3.reduce

(1)作用:俩俩相邻的元素做一个操作

l.reduce(_+_):相邻的俩个做加法

l.foldLeft(10)(_+_):表示运行相邻的俩个加法之后,在最后的结果上在加10

(2)重点:当你不了解一个算法的时候,你想知道他的计算过程,你就可以用下面这种方式将它打印出来。

l.reduceRight((a,b)=>{

println(a+"  "+b)  

a-b})   :这里要尤其注意括号,上面的算法就是将a和b参数传进去计算,先打印 a,b出来然后计算a-b,然后再返回给a,在计算。

7.输出和Tupple

(1)Tupple的概念:如下图可以理解为集合val a=(1,2,3,4,5),提到集合那就应该想到如何取值,a_1这表示去的是集合里面的第一个值

(2)定义多行字符串shift键加冒号连按俩次就出来了

(3)字符串插值,Interpolation

println(s"Hello:$name")  :表示Hello后面追加name里面的值,冒号表示追加。

8.FileApp

(1)Currying:它是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数且返回结果的新函数的技术。http://lib.csdn.net/article/scala/43844

(2)柯里化的作用:在提高适用性还是在延迟执行或者固定易变因素等方面有着重要重要的作用。

Scala前辈博客:https://blog.csdn.net/pzw_0612/article/list/8  

(3)本地文件的读取

val  file=Source.fromFile("路径")(“编码格式”):这Source.fromFile是要导入文件输入输出包的。

如下图,是文件的编码格式,这个格式一定要和你要读取的文件编码格式相同,不然就会报length=1这个错误。在文本编辑器中可以修改文件格式。

(4)网络文件的读取

9.模式匹配

(1)var teachers=Array("ruoe","laoj","yunfei")

val name=teachers(Random.nextInt(teachers,length)

name match{

case yunei =>println("asdhasdias")

case _  if name="ruoze" => println("laoj")

}

(2)上面要注意那个_的用法,他表示里面所有里面的没有的情况。你还可以在这种情况后加上你觉得可能的输出。

(3)15:这个方法得到一个数组,然后在进行模式匹配

10.偏函数

(1)定义:  偏函数:当函数有多个参数,而在使用该函数时不想提供所有参数(比如函数有3个参数),只提供0~2个参数,此时得到的函数便是偏函数。

猜你喜欢

转载自blog.csdn.net/qq_42064119/article/details/81192194
今日推荐