ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

函数的介绍

2019-09-18 15:55:05  阅读:202  来源: 互联网

标签:省略 函数 Int 介绍 匿名 参数 默认值


 

  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. 由于高阶函数调用匿名函数的时候,匿名函数的参数的数据类型是可以推断出的,所以不需要写明参数的类型

 

 

 

 

 

 



 

标签:省略,函数,Int,介绍,匿名,参数,默认值
来源: https://www.cnblogs.com/WeiKing/p/11535256.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有