zoukankan      html  css  js  c++  java
  • Scala 神奇的下划线 _

    引言

    在 Scala 中,下划线 _ 有很多种用法,作为 Scala 初学者也经常被下划线 _ 搞得晕头转向,下面是对 Scala 中下划线 _ 使用的简单总结~

    导包时, 下划线 _ 表示引用多个方法,和 java 中的 * 类似

    import scala.collection.mutable._
    

    访问元组时,下划线 _ 和值一起使用表示第几个元素

    val/var 元组名 = (元素1, 元素2, 元素3....)
    //获取第一个元素
    元组名._1
    //获取第二个元素
    元组名._2
    

    _* 表示获取集合一个一个的元素

    //:_* 得到集合中的所有元素
    val sum = add(1 to 10 :_*)
    println(sum)
    

    如果函数参数在函数体中只使用了一次,可以使用下划线 _ 替换

    val a = List(1,4,2,7,3,5)
    val b = (x:Int,y:Int) => if (x<y)true else false
    println(a.sortWith(b))
    
    val c = a.sortWith((x:Int,y:Int) => if (x<y)true else false)
    println(c)
    println(a.sortWith(_ < _))
    

    使用下划线 _ 来简化函数定义

    val a = List(1,2,3,4,5)
    //a.foreach(x=>println(x))
    a.foreach(println(_))
    
    val a = List(1,2,3,4,5)
    //println(a.map(x=>x+1))
    println(a.map(_ + 1))
    

    下划线 _ 用于元素匹配,表示集合的每个元素

    //元素匹配
    List(1,2,3,4,5,6,7,8,9).filter(_ % 2 == 0)
    

    方法隐式转函数: 方法名 _

    def m1(x:Int,y:Int):Int = x+y
    val f2 = m1 _
    

    类成员变量初始化时,下划线 _ 作为占位符

    var gender:String = _
    

    下划线 _ 用于模式匹配中默认匹配项

    str match {
       case "hadoop" => println("大数据分布式存储和计算框架")
       case "zookeeper" => println("大数据分布式协调服务框架")
       case "spark" => println("大数据分布式内存计算框架")
       case _ => println("未匹配")
    }
    
    作者:Binge
    本文版权归作者和博客园共有,转载必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。
  • 相关阅读:
    防抖、节流函数
    vue如何监听数组的变化
    scss的循环和数组
    linux更新node版本
    函数节流和防抖函数
    vue-cli 使用,更新
    webstorm自动编译scss
    git冲突的处理
    linuix 安装 mysql8
    脚本安装mysql 8
  • 原文地址:https://www.cnblogs.com/binbingg/p/14729640.html
Copyright © 2011-2022 走看看