Scala中的函数式编程与面向对象编程知识点复习整理(一)——函数式编程

本文详细介绍了Scala中的函数式编程,包括基本语法、函数与方法的区别、函数参数相关概念如可变参数、默认值及带名参数,以及函数至简原则。此外,还探讨了高阶函数的概述和使用场景,如函数作为值、参数、返回值,以及闭包和函数柯里化等概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

定义

基础函数编程

基本语法

函数&方法区别

函数参数相关概念

可变参数

参数默认值

带名参数

函数至简原则

高阶函数编程

概述

使用场景


定义


        函数式编程
            将问题分解为一个个步骤,将每个步骤进行封装,作为函数,通过调用这些功能按照指定的步骤,解决问题。
        面向对象编程
            分解对象的属性,行为 然后通过对象的关系以及行为的调用来解决问题


基础函数编程


基本语法

[修饰符] def 函数名(参数名:参数类型) :返回值类型 ={ 函数体}



函数&方法区别

  • 我认为本质区别是一个是面向对象的产物,一个是函数式编程的产物。    
  • 方法是在类中定义的函数
  •     函数是一个完整的对象
  •     方法有重载和重写,但是函数没有

函数参数相关概念


可变参数


        定义
            可以指定若干个数目的参数
        使用
            在参数列表中定义(参数类型后加*),例如
                names:String*

  def getString(name:String*) :Unit={

      println(name)
    }
    getString("yxp","yzp","pp")


        注意事项
            可变参数不能放在参数列表的前面,一般放在最后,否则不好识别


参数默认值


        定义
            
在定义函数时将参数设定一个默认值,在调用该函数时可以不指定该参数
        使用
          
 def fun(password:String ='000000')

 def getDefaultValue(password:String="000000"):Unit={
      println(password)

    }
    getDefaultValue()
    getDefaultValue("123456")


带名参数


        定义
            在调用函数时指定形参名的值
        使用
            fun(password="123456")

函数至简原则


        简单来说就是能省则省

  •         省略return关键字
  •         省略花括号
  •         省略返回值类型
  •         省略参数列表
  •         省略等号
  •             如果函数体中有明确的return语句,那么返回值类型不能省略
  •             如果函数体返回值类型明确为Unit,那么函数体中即使有return关键字也不起作用
  •             如果函数体返回值类型声明为Unit,但又想省略,那么此时必须连同等号一起省略
  •         省略名称和关键字

高阶函数编程


概述


        将函数当成一个类型来使用,而不是当成特定的语法结构。



使用场景


        函数作为值
            val a =fun1 _
            val b = ()=>Unit=fun1
        函数作为参数
            def fun(f:Int=>Int)
        函数作为返回值
            def fun1() ={   fun _  }
        匿名函数
            没有函数名
            f:Int=>Int
        控制抽象
            对一系列语句的封装
            def fun(op: =>Unit) ={ op }
            fun(println("xx"))
        闭包
            概述

  •                 一个函数使用了外部的变量,把这个变量包含到了它的内部来使用,改变了这个变量的生命周期
  •                 将当前代码形成一个闭合的环境,这个环境称之为闭包环境,简称为闭包

            特点

  •         内部函数在外部使用的时候会有闭包
  •         将函数作为对象使用,会有闭包
  •         所有的匿名函数都有闭包

            案例

  def main(args: Array[String]): Unit = {
    val i=5;
    def funclose(a:Int): (Int)=>Unit = {
      def funinner(b:Int): Unit ={
        println(b+a+i)
      }

      funinner
    }
    funclose(2)(3)

  }

        函数柯里化

            概述

                将原来接受两个参数的函数变成新的接受一个参数的函数的过程。新的函数返回一个以原有第二个参数为参数的函数
            案例

 def fun(i:Int,j:Int): Unit ={
    println(i+j)
  }
  def fun1(i:Int)(j:Int): Unit ={
    println(i+j)
  }


        惰性函数
            函数案回执被声明为lazy时函数的执行会被推迟,直到我们首次对此取值,该函数才会执行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值