zoukankan      html  css  js  c++  java
  • 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)
      }
    
    }
    





  • 相关阅读:
    网络编程之即时通信程序(聊天室)(一)通信流程简介及通信协议定制
    C#常用加密方法解析
    ASP.NET常用数据绑定控件优劣总结
    使用XPO开发时可以参考使用的架构
    渠道会上的体会
    如何利用第三方SDK开发MSN机器人以及实现语音视频?
    对 XPO 的一些问题的解答
    c++ 参数传递 之引用形参 GIS
    指针与引用的区别 GIS
    c++ const 修饰数组 GIS
  • 原文地址:https://www.cnblogs.com/TendToBigData/p/10501288.html
Copyright © 2011-2022 走看看