函数的介绍

假如想象 提交于 2019-11-30 01:05:26

 

  1. 函数和方法的区别:

    1. 在oop中,方法必须在类中,不能脱离class独立存在 
    2. FP中,函数可以独立存在的,不需要依赖于class类

    3. 对于类似Scala语言(或者Python语言)既是OOP又是FP编程

  2. 函数的定义:
    1. 函数就是讲代码块封装起来的可以实现某种功能并且可以重复使用
  3. 函数的语法:def max(x: Int, y: Int): Int = {}
    1. def 声明max为一个函数
    2. max :表示的函数名称
    3. (x: Int, y: Int) :表示函数的参数(两个参数,参数的类型都为Int类型)
    4. int :表示的是函数的返回值类型,在Scala中没有void数据类型,Unit表示的就是没有返回值
    5. 注意:在对函数进行定义时,可以指定函数的参数的默认值,如果不对参数进行重新赋值,就使用默认值,默认值一般都放在参数列表的最后:def sayHello(name: String, say: String = "hello"): Unit = {
  4. 函数的调用
    1. 无默认值:从前到后依次赋值
    2. 有默认值:在调用的时候指定变量 的名称进行赋值,不需要按照顺序;从前到后依次赋值,不需要指定名称(有默认值的也会被赋值)
        def pri(x :Int,y :Int =4,z:Int)=print(s"$x,$y,$z")
        pri(x =4,z =6)
  5. 函数类型:
    1.   name :String :name表示是变量的名称,String 表示字符串数据类型
    2.   f:(T1,T2)=>R 或  f:T =>R        
      1. f:表示的是函数的名称,(T1,T2)=>R 和T =>R 表示函数类型
      2. T、T1、T2 :表示的函数的参数的数据类型,此次表示的是泛型
      3. R表示的是函数的返回值的数据类型,此处也是泛型
  6. 匿名函数:
    1. 匿名函数的基本格式:(变量名:参数类型...,变量名:参数类型) =>{函数体}
    2. 函数体如果是多行代码的话,使用{},如果是单行代码,通常省略{}
    3. 将一个匿名函数赋值给一个变量 val addValue = (x: Int, y: Int) => x + y
    4. 匿名函数不需要指定函数体的返回值,将会通过函数体进行推断
  7. 高阶函数
    1. 定义:如果函数f的参数中有参数为函数g,则f称为高阶函数
    2. 高阶函数传递函数参数的方式

      1. 直接使用匿名函数

      2. 传递满足要去的函数 
  8. 函数的简写:
    1. scala中通用的简写:
      1. 当{}里面的代码块就只有一行代码时候,{}可以省略不写
      2. 当数据的类型可以由代码块推断出时候,可以省略写返回值类型
    2. scala中函数的简写:
      1. 函数的返回值类型可以由函数体推断,可以省略
      2. 如果函数体就只有一行代码,可以省略{}
      3. 如果函数没有返回值,则可以省略Unit和=
      4. 如果函数没有参数,则可以省略()
    3. 匿名函数的简化形式
      1. 匿名函数的参数的类型可以推断获取,则可以省略不写
      2. 匿名函数只有一个参数可以省略()
      3. 如果匿名函数的参数在函数体中有且仅使用一次,而且独立使用,参数可以用_代替
      4. 由于高阶函数调用匿名函数的时候,匿名函数的参数的数据类型是可以推断出的,所以不需要写明参数的类型

 

 

 

 

 

 



 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!