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)
      }
    
    }
    





  • 相关阅读:
    Android Push Notification实现信息推送使用
    java动态编译
    Directx11教程(56) 建立一个skydome
    Directx11教程(51) 简单的billboard
    Directx11教程(52) 实例(instancing)的简单应用
    Directx11教程(50) 输出depth/stencil buffer的内容
    Directx11教程(54) 简单的基于GS的billboard实现
    Directx11教程(57) 环境映射
    Directx11教程(59) tessellation学习(1)
    Directx11教程(20) 一个简单的水面
  • 原文地址:https://www.cnblogs.com/TendToBigData/p/10501288.html
Copyright © 2011-2022 走看看