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

友情链接

相关推荐
m0_380743873 小时前
C++中的freopen的用法实例详解
开发语言·c++
Escalating_xu3 小时前
【Python】基础语法(1):常量、变量、类型、输入输出与运算符
开发语言·python
jimy13 小时前
polymorph.cpp里面的“析构函数、智能指针”问题
开发语言·c++
m0_380743873 小时前
PHP 8.3 缓存清除不生效怎么排查
开发语言·php
朝朝辞暮i4 小时前
C++ 第 6 课:switch —— 多状态选择
开发语言·c++·算法
小凡geo4 小时前
本地商家 GEO:用脚本一键生成 FAQPage 结构化数据,让 AI 切片更稳
开发语言·人工智能·python·microsoft·搜索引擎·ai
朝朝辞暮i4 小时前
C++ 第 4 课:if / else —— 让程序自己做决定
开发语言·c++
波力海苔夹心脆6755 小时前
C# 值类型与引用类型详解:存储位置、赋值机制、参数传递、相等比较、装箱拆箱与常见陷阱
开发语言·jvm·经验分享·笔记·c#·.net
蜗牛互联网5 小时前
WSL Containers GA:本地AI容器的生命周期、网络与治理验收
java·网络·人工智能·后端
m0_380743875 小时前
Qt中导航栏实现的详细指南
开发语言·c++