1. 函数
函数就是一个非常灵活的运算逻辑,可以灵活的将函数传入方法中,前提是方法中接收的是类型一致的函数类型
函数式编程的好处:想要做什么就调用相应的方法(fliter、map、groupBy、sortBy),想要具体怎么做,就传入相应的函数
函数式编程的特点之一就是支持链式编程(不停的函数调用函数)
1.1 一种更加简洁的定义函数的方式(_)
以前的形式
简洁的形式
"_" 相当于一个占位符,将遍历出来的值赋给这个占位符
该占位符号出现两次,其会认为出现两个参数,由于此处就是一个参数,若用如下表达式求平方会报错
此时想求平方的话可以使用math包来达到目的
1.2 函数和方法区别
函数可以作为参数传入到方法中【函数本质是一个引用类型】,但是方法不行
下面的例子似乎能得到方法可以作为参数传入方法
m相当于m _的语法糖,m _会生成一个函数
问题1:为什么在方法中传入方法m可以执行相应的运算呢?
因为当传入一个方法名时,scala内部会将其转换成函数,实际传入的还是一个函数
问题2:m _这种语法到底是生成了一个跟m方法运算逻辑一样的函数,还是生成的函数调用了m方法呢
所以m _这种语法是生成了一个函数,这个生成的函数再调用了m方法