052_函数式编程几个重要概念

几个概念的说明

在学习Scala中将方法,函数,函数式编程和面向对象编程明确一下:

  1. 在Scala中,方法函数几乎可以等同(比如他们的定义,使用,运行机制都一样的),只是函数的使用方式更加的灵活多样[方法转换函数]
  2. 函数式编程是从编程方式(范式)的角度来谈的,可以这样理解: 函数式编程吧哈数当做一等公民,充分利用函数,支持的函数的多种使用方式. 比如: 在scala中,函数式一等公民,想变量一项,既可以作为函数的参数使用,也可以将函数赋值给一个变量,函数的创建不用依赖于类或者对象,而在java当中,函数的创建则要依赖于类,抽象类或者接口.
  3. 面向对象编程是以对象为基础的编程方式.
  4. 在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的基础上进行的优化

就像计算机的结构, 冯诺依曼已经把这个结构都搞好了

你不能改变这种结构,只是形式上的变化,而其本质是没有变化的

这个函数式也是这样,只是让函数的调用方式更加的灵活

image-20210324141439748

不管你是方法还是函数

你的一段代码都是为了完成某个功能

image-20210324141600034


results matching ""

    No results matching ""