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作为参数而不再接收变量。

  • 相关阅读:
    strut2接收参数的三种方式
    MySQL备忘录
    Java集合框架总结
    Hibernate之SchemaExport的使用
    MyEclipse中查看struts_spring_hibernate源码
    拦截器(Interceptor)中的invocation.invoke()
    ActionContext.getContext()用法
    Struts2 XML配置详解
    TCP协议中的三次握手和四次挥手
    反射如何破坏单例模式
  • 原文地址:https://www.cnblogs.com/rabbit624/p/10533874.html
Copyright © 2011-2022 走看看