052_函数式编程几个重要概念
几个概念的说明
在学习Scala中将方法,函数,函数式编程和面向对象编程明确一下:
- 在Scala中,方法和函数几乎可以等同(比如他们的定义,使用,运行机制都一样的),只是函数的使用方式更加的灵活多样[方法转换函数]
- 函数式编程是从编程方式(范式)的角度来谈的,可以这样理解: 函数式编程吧哈数当做一等公民,充分利用函数,支持的函数的多种使用方式. 比如: 在scala中,函数式一等公民,想变量一项,既可以作为函数的参数使用,也可以将函数赋值给一个变量,函数的创建不用依赖于类或者对象,而在java当中,函数的创建则要依赖于类,抽象类或者接口.
- 面向对象编程是以对象为基础的编程方式.
- 在scala中函数式编程和面向对象编程融合在一起了
package com.atguigu.chapter05
/**
* ClassName: ${CLASS_NAME} <br/>
* Description: ${CLASS_NAME} <br/>
* Date: 2021-03-24 13:54 <br/>
* <br/>
*
* @author yufengming
* @email yufengming@travelsky.com
* @project scala
* @package com.atguigu.chapter05
* <p>
* 修改记录
*
*/
object Method2Function {
def main(args: Array[String]): Unit = {
// 使用方法
// 先创建一个对象
val dog = new Dog
println(dog.sum(10,20))
//方法 如何转换成函数
// 他们可以做到无缝的转换
//
var f1 = dog.sum _
println("f1="+f1)
// 使用方法
//
println("f1"+f1(50,60))
/*
* 30
f1=com.atguigu.chapter05.Method2Function$$$Lambda$3/466002798@387c703b
f1110
* */
// 函数, 求两个数的和
val f2 = (n1:Int,n2:Int) => {
n1+n2// 函数体
}
println("f2=",f2)
println("f2=",f2(3,8))
/**
* (f2=,com.atguigu.chapter05.Method2Function$$$Lambda$4/205125520@71e7a66b)
* (f2=,11)
*/
}
}
class Dog{
// 方法
def sum(n1:Int,n2:Int):Int = {
n1+n2
}
}
这个马丁这个老哥,他只是在这种java的基础上进行的优化
就像计算机的结构, 冯诺依曼已经把这个结构都搞好了
你不能改变这种结构,只是形式上的变化,而其本质是没有变化的
这个函数式也是这样,只是让函数的调用方式更加的灵活
不管你是方法还是函数
你的一段代码都是为了完成某个功能