• Scala编程入门---函数式编程


    高阶函数

    Scala中,由于函数时一等公民,因此可以直接将某个函数传入其他函数,作为参数。这个功能是极其强大的,也是Java这种面向对象的编程语言所不具备的。

    接收其他函数作为函数参数的函数,也被称作高阶函数

    1 val sayHelloFunc =(name:String) => println("Hello,"+name)
    2 
    3 def greeting(func:(String)=>Unit,name:String){func(name)}
    4 
    5 greeting(sayHelloFunc,"leo")

    高阶函数的另一个功能是将函数作为返回值

    def getGreetingFunc(msg:String) = (name:String) => println(msg+","+name)
    val greetingFunc = getGreetingFunc("hello")
    greetingFunc("leo")

    高阶函数的类型推断

    高阶函数可以自己推断出函数类型,而不需要写明类型,而且对于只有一个参数的函数,还可以省去小括号,如果仅有的一个参数右侧的函数只是用一次,则还可以将接受参数省略,并且将参数用 _ 来替代

    诸如:3*_的这种语法,必须掌握,spark中大量的使用了这种语法。

    1 def greeting(Func:(String) => Unit,name:String){func(name)}
    #调用
    2 greeting((name:String) =>println("Hello,"+name),"leo") 3 greeting((name) => println("Hello,"+name),"leo") 4 greeting(name =>pringtln("Hello,"+name),"leo") 5 6 def triple(func:(Int) => Int) ={func(3)} 7 triple(3 *_)

    Scala的常用的高阶函数

    //map:对传入的每个元素都进行映射,返回一个处理后的元素

    Array(1,2,3,4,5).map(2* _)

    //foreach:对传入的每个元素都进行处理,但是没有返回值

    (1to9).filter(_ %2== 0)

    reduceLeft:从左侧元素开始,进行reduce操作,即先对元素1和元素2进行处理,然后将结果与元素3处理,再将结果与元素4处理,依次类推,即为reduce

    下面这个操作就相当于1*2*3*4*5*6*7*8*9  

    (1to9).reduceLeft(_ * _)

    sortWith:对元素进行两两相比,进行排序

    Array(3,2,5,4,10,1).sortWith(_ < _)
  • 相关阅读:
    jQuery daily
    jQuery daily
    spring事务管理
    AspectJ AOP切面编程(XML配置)
    springAOP思想
    spring与web整合(交鸡肋,因为有前台框架封装了servlet)
    spring复杂对象注入四种方式
    spring的Bean注入和P标签使用
    spring Bean的作用域、生命周期和后处理器
    IoC容器实例化Bean三种方式
  • 原文地址:https://www.cnblogs.com/yeszero/p/6958249.html
Copyright © 2020-2023  润新知