• Scala 函数式编程进阶 2 更详 代码说明


    package com.xing.listfile
    
    /**
      * Created by DengNi on 2017/2/11.
      */
    object functionalProgramming {
    
      def main(args: Array[String]) {
        // 把函数赋值给一个变量
        val hs = helloSpark _  //此处应该是一个不可变量,但是如果是可变的话 也可以运行  但是代码中会提示不可变 val
        hs("spark")
        //def fhs(name :String) = helloSpark _  // 把一个函数赋值给另外一个函数 ,这样子结果好像不对,不是赋值 ,是返回值
        def fhs(name :String) = helloSpark(name)  //这个对 ,原理 ??? 这个说明的是函数的返回值是一个函数 ,而不是赋值
        fhs("fhs")
        //函数中更常用的是 匿名函数
        val hsn = (name:String) => println("hi , my name is " + name )
        hsn("spark")
    
        def sellOrder() = (name:String) => println("hi , my name is " + name ) // 这么写是对的 ,但是不能解释是不是最优 ,应该没有问题
        sellOrder()("sparkQq")
    
        def lineItem(message:String) = (name:String) => println("hi , my name is " + name +message) // 这么写是对的 ,但是不能解释是不是最优 ,没有问题
        lineItem("hi")("sparkQWES") //这就是currying
    
        val onlyLineItem = lineItem("hello") //currying  也可以分步写成这种格式
        onlyLineItem("sparkQWES")
    
        //函数可以作为参数传递给另外一个函数 ,当参数的函数也需要在其它地方定义好
    
        def myFunction(f:(String) => Unit , name :String): Unit ={
          f(name)
        }
        myFunction(functionSo,"nameSpark")
        def functionSo(name :String): Unit ={   //但是如果给出一个函数参数的名字 了 ,其实就没有必要这么做了 ,一般我们都是匿名函数给一个变量
          println("name pass fun to fun "  + name)
        }
    
        val valSO = (name:String) =>  println("name pass fun to fun val so "  + name) //就像上面说的 ,更多是这么操作
        myFunction(valSO,"nameSpark")
    
    
      }
    
      def helloSpark(name:String): Unit ={
        println("hi, " + name)
      }
    
    }
    





  • 相关阅读:
    MySQL------代码1024,can't get hostname for your address解决方法
    MySQL------存储过程的使用
    MyEclipse------如何添加jspsmartupload.jar,用于文件上传
    JQuery------实现鼠标点击和滑动不同效果
    CSS------如何让div中的div处于右下角
    JQuery------制作div模态框
    CSS------Filter属性的使用方法
    python使用元类
    python __new__()分析
    centos自带python2.6升级到python2.7。并解决yum pip easy_install pip等模块兼容性问题
  • 原文地址:https://www.cnblogs.com/TendToBigData/p/10501288.html
Copyright © 2020-2023  润新知