• 函数的介绍


     

    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. 由于高阶函数调用匿名函数的时候,匿名函数的参数的数据类型是可以推断出的,所以不需要写明参数的类型
    9. 一些常用的函数
      1. contains:判断是否包含
      2. isEmpty:判断是否为空
      3. max:求最大值
      4. min:求最小值
      5. sum:求和
      6. list1.zip(list2):将两个list合并成一个map
      7. zipList.unzip:将一个map分解两个list
      8. list.zipWithIndex:将一个list和其下标合成一个map
      9. mkString:将数组转换为一个字符串,指定各个元素之间的分隔符:array.mkString(", ")和array.mkString("< ", ", ", " >")(前后加上<和>)
      10. take:获取前几个
      11. takeRight:从右边开始获取前几个
      12. takeLeft:从左边开始获取前几个
      13. reverse:反转
      14. swap:二元组的key和value互换位置

     

     

     



  • 相关阅读:
    CI控制器
    php+mysql新无线级分类
    php函数引用
    java数据类型
    进制装换
    java环境
    node.js
    移动端或者网页端下拉加载
    yii DAO操作总结
    yii中find()指定条件
  • 原文地址:https://www.cnblogs.com/WeiKing/p/11535256.html
Copyright © 2020-2023  润新知