zoukankan      html  css  js  c++  java
  • scala中的下划线代替实参变量 ==> 分析一个乍看不知道在嘎哈的函数

    //定义一个函数

    scala> def multiple(func: Int => Int, a :Int) = {func(a)}
    multiple: (func: Int => Int, a: Int)Int

    //调用

    scala> multiple((a:Int) => a+1,5)
    res225: Int = 6

    //自动类型推断,可以省略参数类型

    scala> multiple((a) => a+1,5)
    res229: Int = 6

    //只有一个参数,可以省略圆括号

    scala> multiple(a => a+1,5)
    res230: Int = 6

    //在执行中只被调用一次,参数可以用 _ (下划线)代替

    scala> multiple(_+1,5)
    res231: Int = 6

    一个下划线可以代表这么大的信息量。。。也是挺有意思的。

    ================================================================

    //把变量a换成一个常数 3,那么函数只要有一个函数参数就可以了

    scala> def multiple(func: Int => Int) = {func(3)}
    multiple: (func: Int => Int)Int

    //调用, _ 就代表 3 

    scala> multiple(_*2)
    res232: Int = 6

    scala> multiple(_+100)
    res234: Int = 103

    scala> multiple(1000+_)
    res235: Int = 1003

    乍一看 multiple(func: Int => Int) = {func(3)} 这个函数有点懵,不知道在嘎哈。 分析一下,明白了。

    然后发现其实这个函数很好理解。就是要对 3 做点啥。函数体中就是直接在匿名函数中传入了一个固定的常量3作为参数而不再接收变量。

  • 相关阅读:
    Python 数据结构_队列
    Python 数据结构_堆栈
    基于SAP的中国式数据分析浅谈
    基于SAP的中国式数据分析浅谈
    logstash 处理nginx 错误日志
    logstash nginx 访问日志
    其中 (%{WORD:x_forword}|-) |表示或的意思
    grok 官方文档
    vCenter 部件关系简介 & 网络原理
    haproxy nginx 多路径
  • 原文地址:https://www.cnblogs.com/rabbit624/p/10533874.html
Copyright © 2011-2022 走看看