当前位置: 首页 > article >正文

Scala_【5】函数式编程

第五章

  • 函数式编程
  • 函数和方法的区别
  • 函数声明
  • 函数参数
    • 可变参数
    • 参数默认值
  • 函数至简原则
  • 匿名函数
  • 高阶函数
    • 函数作为值传递
    • 函数作为参数传递
    • 函数作为返回值
  • 函数闭包&柯里化
  • 函数递归
  • 控制抽象
  • 惰性函数
  • 友情链接

函数式编程

面向对象编程
解决问题时,分解对象,行为,属性,然后通过对象的关系以及行为的调用来解决问题,Scala语言是一个完全面向对象编程语言。万物皆对象
函数式编程
解决问题时,将问题分解成一个一个的步骤,将每个步骤进行封装(函数),通过调用这些封装好的步骤,解决问题,Scala语言是一个完全函数式编程语言。万物皆函数

函数和方法的区别

核心概念

  1. 为完成某一功能的程序指令(语句)的集合,称为函数
  2. 类中的函数称之方法

实际应用

  1. Scala语言的语法非常灵活,可以在任何的语法结构中声明任何的语法
  2. 函数没有重载和重写的概念;方法可以进行重载和重写
  3. scala中函数可以嵌套定义

函数声明

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

函数参数

可变参数

在这里插入图片描述

参数默认值

在这里插入图片描述

函数至简原则

函数至简原则:能省则省

在这里插入图片描述

  • 如果函数明确声明Unit,那么即使函数体中使用return关键字也不起作用
  • 如果函数明确使用return关键字,那么函数返回就不能使用自行推断了,需要声明返回值类型
  • Scala如果想要自动推断无返回值,可以省略等号

匿名函数

没有名字的函数就是匿名函数,可以直接通过函数字面量(表达式)来设置匿名函数
函数字面量定义格式:
val sum: (Int, Int) => Int = (x: Int, y: Int) => x + y

在这里插入图片描述

高阶函数

函数作为值传递

在这里插入图片描述

函数作为参数传递

在这里插入图片描述

函数作为返回值

在这里插入图片描述

函数闭包&柯里化

在这里插入图片描述
在这里插入图片描述

函数递归

一个函数/方法在函数/方法体内又调用了本身,我们称之为递归调用

/**
 * 1) 方法调用自身
 * 2) 方法必须要有跳出的逻辑
 * 3) 方法调用自身时,传递的参数应该有规律
 * 4) scala中的递归必须声明函数返回值类型
 */

在这里插入图片描述

控制抽象

在这里插入图片描述

惰性函数

当函数返回值被声明为lazy时,函数的执行将被推迟,直到我们首次对此取值,该函数才会执行。这种函数我们称之为惰性函数

在这里插入图片描述

友情链接

  • 上一章
    Scala_【4】流程控制
  • 下一章
    Scala_【6】面对对象

http://www.kler.cn/a/466606.html

相关文章:

  • Kafka消息队列
  • gaussdb怎么查询一个表所在的表空间的总大小和可用大小,用GB为单位表示?
  • 【PS不常见教程】实操篇之通道抠图-抠黑色背景的图片
  • Kbuild学习知识点
  • 详解MySQL SQL删除(超详,7K,含实例与分析)
  • 前端-计算机网络篇
  • 以太网连接,本地连接,宽带连接,无线WLAN连接;交换机和路由器
  • 【MyBatis-Plus 条件构造器】全面解析 Wrapper
  • 【赵渝强老师】MongoDB文档级别的并发控制
  • vue 虚拟滚动 vue-virtual-scroller RecycleScroller
  • logback日志文件多环境配置路径
  • Linux下读取Windows下保存的文件,报错信息中出现“^M“时如何解决?【由于Windows和Linux的换行方式不同造成的-提供两种转换方式】
  • React18路由和Vue3路由进行对比
  • [2024] 如何以 5 种可行的方式在Android中打开 HEIC 文件?
  • aardio —— 虚表 —— 模拟属性框
  • Edge Scdn的应用场景有哪些?
  • VScode SSH 错误:Got bad result from install script 解決
  • CG顶会论文阅读|《科技论文写作》硕士课程报告
  • FreeSWITCH dialplan/default.xml 之释疑
  • 如何删除 Android 设备上的应用程序 | 3种高效方法
  • Springcloud项目-前后端联调(一)
  • 代码随想录算法训练营day21
  • Spring线程池优雅关闭
  • YOLOv8/YOLOv11改进 添加CBAM、GAM、SimAM、EMA、CAA、ECA、CA等多种注意力机制
  • GWAS数据和软件下载
  • JeeSite 快速开发平台:全能企业级快速开发解决方案|GitCode 光引计划征文展示