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

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.lryc.cn/news/515241.html

相关文章:

  • 解析 World Football Cup 问题及其 Python 实现
  • 9.系统学习-卷积神经网络
  • 基于FPGA的出租车里程时间计费器
  • 三甲医院等级评审八维数据分析应用(五)--数据集成与共享篇
  • VUE条件树查询 自定义条件节点
  • 什么是打流,怎么用iperf3打流
  • 使用MySQL APT源在Linux上安装MySQL
  • redux react-redux @reduxjs/toolkit
  • 【偏好对齐】通过ORM直接推导出PRM
  • Python与其他编程语言的区别是什么?
  • cuda11.6和对应的cudnn(windows)
  • 24年无人机行业资讯 | 12.23-12.29
  • uniapp:微信小程序文本长按无法出现复制菜单
  • qml Item详解
  • 【Java回顾】Day4 反射机制
  • 【沉默的羔羊心理学】汉尼拔的“移情”游戏:操纵与理解的艺术,精神分析学视角下的角色互动
  • [深度学习] 大模型学习1-大语言模型基础知识
  • 如何解决数据库和缓存不一致的问题
  • 剑指Offer|LCR 021. 删除链表的倒数第 N 个结点
  • 【NX入门篇】
  • ubuntu如何禁用 Snap 更新
  • Spring AI Alibaba-对话模型(Chat Model)
  • HTML——79.代码快捷输入方式
  • 李宏毅机器学习课程笔记01 | 1.Introduction of Machine/Deep Learning
  • 1、pycharm、python下载与安装
  • 计算机网络复习(学习通作业4、5、6系统答案)
  • javascript 绘制图表的几种方式
  • 【网络协议】开放式最短路径优先协议OSPF详解(四)
  • C++STL中algorithm的介绍与使用
  • Oracle exp和imp命令导出导入dmp文件