Scala高阶函数

版权声明:个人原创,转载请标注! https://blog.csdn.net/Z_Date/article/details/84260976

概念:如果一个函数的传入参数为函数或者返回值是函数,则该函数即为高阶函数。

3.7.1. 匿名函数的定义和案例

1、匿名函数定义:

(x: Int) => x + 1
  1. 匿名函数说明(一般作为参数值传递):

3.7.2. 函数作为参数[1] 

第一步:定义带函数类型参数的函数f2

第二步:定义函数f3(一般定义匿名函数),作为f2的参数值

第三步:调用f2,将f3作为f2的参数值,传递

3.7.3. 返回值为函数

需求:根据参数为true或false,返回转换大写或小写的函数)

3.7.4. 一些简单预定义高阶函数举例

A)、map函数的用法

B)、filter函数的用法

C)、foreach函数的用法

注意:map函数对数组中每个元素操作,返回一个新的数组

      filter函数对数组中每个元素进行判断,过滤掉返回false数据

      foreach 函数对函数中的每个元素进行操作。

3.7.5. 参数的类型推断(函数作为参数传递)

当将一个匿名函数传递给另一个函数或方法时,scala会尽可能帮你推断出类型信息。

案例需求:

  1. 要遍历数组中的数据,标准语法如下:

b、接着将语法变型:你可以省略掉x的类型(自动推断)

c、接着将语法变型:对于只有一个参数的函数,你还可以省略掉()

d、接着将语法变型:如果参数在=>右侧只出现一次,你还可以写成下面这种形式

注意:1、_代表通配符,代表任意元素。此处代表集合中的元素

      2、_放入print()方法时候,导致无法推断_元素类型,就会报错

     

f、接着将语法变型:当然你一定可以将{}去掉的

注意:scala语法格式写法非常灵活,以后写代码可以多尝试几种写法,但一定要注释明确

3.7.6. 闭包

闭包:是一个函数,返回值依赖于声明在函数外部的一个或多个变量。

这里我们引入一个自由变量 a,这个变量定义在函数外面。

这样定义的函数变量 add成为一个"闭包",因为它引用到函数外面定义的变量,定义这个函数的过程是将这个自由变量捕获而构成一个封闭的函数

猜你喜欢

转载自blog.csdn.net/Z_Date/article/details/84260976