函数式编程几个重要概念|学习笔记

简介: 快速学习函数式编程几个重要概念。

开发者学堂课程【Scala 核心编程-基础函数式编程几个重要概念】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/609/detail/8927


函数式编程几个重要概念

 

目录

一、几个概念的说明

二、函数、方法的关系分析

 

一、几个概念的说明

在学习 scala 中将方法、函数、函数式编程和面向对象编程明确一下。在这里函数和函数编程是两个不同的概念,就好像对象和面向对象编程是两种概念。

1.第一个概念

(1)在 scala 中,方法和函数几乎可以等同(比如他们的定义、使用、运行机制都一样的),只是函数的使用方式更加灵活多样【方法转函数-方法可以很轻松的转化为函数】。

这里使用的词是“几乎”,就表示还是能发生。

(2)方法和函数的区别

函数的使用方式更加灵活多样

(3)scala 方法和函数的关系

示意图

方法有一个专一的术语,

image.png

书写代码

package com.atguigu.chapter05

object Method2Function {

def main(args: Array[String]): Unit = {

//使用方法

//先创建一个对象

val dog = new Dog

println(dog.sum(10,20))

//方法转为函数

val f1 = dog.sum_

println("f1=" + f1)

}

}

//运行一下

image.png

//就可以看见 f1的类型就是 function

//添加 println("f1=" + f1(50,60))

//再次运行

image.png

//就可以看见 f1就是110

//函数,求两个数的和

val f2 = (n1:Int,n2:Int) => {

n1 + n2 //函数体

}

println("f2=" + f2)

//运行

image.png

}

//添加 println("f2=" + f1(5,6))

image.png

class Dog {

//方法

def sum(n1:Int,n2: Int): Int = {

n1 + n2

}

}

更直接的写法

class Dog {

//方法

def sum(n1:Int,n2: Int): Int = {

n1 + n2

}

}

完整代码

package com.atguigu.chapter05

object Method2Function {

def main(args: Array[String]): Unit = {

class Dog {

//方法

def sum(n1:Int,n2: Int): Int = {

n1 + n2

//使用方法

//先创建一个对象

val dog = new Dog

println(dog.sum(10,20))

//方法转为函数

val f1 = dog.sum_

println("f1=" + f1)

println("f1=" + f1(50,60))

//函数,求两个数的和

val f2 = (n1:Int,n2:Int) => {

n1 + n2 //函数体

}

println("f2=" + f2)

println("f2=" + f1(5,6))

class Dog {

//方法

def sum(n1:Int,n2: Int): Int = {

n1 + n2

}

}

2.函数式编程是从编程方式(范式)的角度来谈的,可以这样理解:函数式编程把函数当做一等公民,充分利用函数、支持的函数的多样使用方式。

比如:

在 Scala 当中,函数是一等公民,像变量一样,即可以作为函数的参数使用,也可以将函数赋值给一个变量,函数的创建不用依赖于类或者对象,而在 Java 当中,函数的创建则要依赖于类、抽象类或者接口。

(3)面向对象编程是以对象为基础的编程方式。

(4)在 scala 中函数式编程和面向对象编程融合在一起了。

 

二、函数、方法的关系分析

如果有一个人叫韩顺平,在不同的情况下,称呼就会有不同的变化:

如果是在课堂上韩顺平的地位就是一名老师

如果是在家中就叫老爸

image.png

一段代码完成某个功能

如果使用 oop 编程,就会把完成某个功能的代码叫做方法

如果使用函数式编程,就会把完成某个功能的代码叫做函数

image.png

它虽然名称变化了,但是它的本质没有变化。

相关文章
|
7月前
|
Python
面向对象编程:核心概念与实践
面向对象编程:核心概念与实践
110 0
|
6月前
|
算法 编译器 C语言
C++进阶之路:深入理解编程范式,从面向过程到面向对象(类与对象_上篇)
C++进阶之路:深入理解编程范式,从面向过程到面向对象(类与对象_上篇)
80 3
|
7月前
|
大数据 开发者
探索编程范式:面向对象与函数式的抉择
在当今快速发展的软件开发领域,面向对象编程(OOP)和函数式编程(FP)是两种重要的编程范式。本文将深入比较这两种范式的特点、应用场景和优劣势,为读者提供选择时的参考,并探讨如何在实际项目中灵活运用它们。
|
7月前
|
Java 程序员 数据处理
探索编程范式:面向对象编程与函数式编程的比较与取舍
本文将探讨面向对象编程(OOP)和函数式编程(FP)两种主流的编程范式,并比较它们在代码组织、可复用性、并发性和代码风格等方面的特点。通过深入了解它们的优势和不足,读者可以更好地选择适合自己项目需求的编程范式。
276 1
|
7月前
|
Serverless 开发者 Python
Python编程中的函数式编程思想探究
【2月更文挑战第10天】传统的程序设计是以过程为中心,而函数式编程则将函数视为基本构建块,强调函数的纯洁性和不变性。本文将从Python编程语言的角度探讨函数式编程思想在实践中的应用,介绍函数式编程的概念、特点以及在Python中的具体实现方式,帮助读者更好地理解和运用函数式编程范式。
43 0
面向对象概念
1. Coad和Yourdon给出了一个定义:面向对象=对象+类+继承+通信 2. 如果一个软件系统使用这样4个概念设计和实现,则我们认为这个软件系统是面向对象的 什么是对象(object)
97 0
|
算法 Java Scala
函数式编程基础介绍|学习笔记
快速学习函数式编程基础介绍。
函数式编程基础介绍|学习笔记
|
PHP 开发者
面向对象编程思想介绍|学习笔记
快速学习面向对象编程思想介绍
面向对象编程思想介绍|学习笔记
|
Java API
函数式编程概念和应用
函数式编程的核心要素:传入参数,执行逻辑,返回值,也可以没有返回值。函数式的编程风格侧重描述程序的执行逻辑,不是执行过程。
234 0
函数式编程概念和应用
|
存储 Java 程序员
面向对象基本概念
面向对象基本概念
128 0