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时,函数的执行将被推迟,直到我们首次对此取值,该函数才会执行。这种函数我们称之为惰性函数

友情链接

相关推荐
lgily-12259 分钟前
Python常用算法
开发语言·python·算法
Tiger Z14 分钟前
R 语言科研绘图第 14 期 --- 柱状图-分组堆叠
开发语言·程序人生·r语言·贴图
前端青山23 分钟前
JavaScript闭包的深度剖析与实际应用
开发语言·前端·javascript·前端框架·ecmascript
JINGWHALE127 分钟前
设计模式 结构型 组合模式(Composite Pattern)与 常见技术框架应用 解析
前端·人工智能·后端·设计模式·性能优化·系统架构·组合模式
凌小添38 分钟前
Python教程丨Python环境搭建 (含IDE安装)——保姆级教程!
开发语言·python·教程
代码驿站5201 小时前
PHP语言的数据库编程
开发语言·后端·golang
花菜会噎住2 小时前
Python 模块,包(详解)
开发语言·python
kittygilr2 小时前
matlab中几个取整函数的区别
开发语言·matlab
mikey棒棒棒2 小时前
SSM-Spring-IOC/DI注解开发
java·后端·spring·ssm·ioc·di
我不是你的灯笼2 小时前
Go语言的 的垃圾回收(Garbage Collection)基础知识
开发语言·后端·golang