Scala -- Scala中“_“的用法总结(持续更新)

1. 导包时,多引用的方法,和java中的*类似

例如:

import scala.collection.mutable._

2. 访问元组时,和值一起使用表示第几个元素

例如:

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

3. 在方法转函数时,在方法名后面用<空格>加 ‘_’ 来进行转换

例如:

def method1(x:Int,y:Int):Int = x+y
val f2 = method1<空格>_

在这里插入图片描述

4. 根据类型的初始值进行的占位符

例如:

var gender:String = _

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

当函数参数,只在函数体中出现一次,而且函数体没有嵌套调用时,可以使用下划线来简化函数定义
例如:

def main(args: Array[String]): Unit = {
    val a = List(1,2,3,4,5)
//    a.foreach(x=>println(x))
    a.foreach(println(_))
}

这里下划线可替代 x=>println(x),

• 如果方法参数是函数,如果出现了下划线,scala编译器会自动将代码封装到一个函数中
• 参数列表也是由scala编译器自动处理
例二:

 def main(args: Array[String]): Unit = {
    val a = List(1,2,3,4,5)
//    println(a.map(x=>x+1))
    println(a.map(_ + 1))
  }

6. 用于元素匹配

例如:

List(1,2,3,4,5,6,7,8,9).filter(_ % 2 == 0)

匹配每个元素,得出满足条件的列表

7. 用于替换函数的参数

函数参数只在函数中出现一次,可以使用下划线代替

def main(args: Array[String]): Unit = {
    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(_ < _))
  }

在这里插入图片描述

8. 用于模式匹配中默认匹配项

  1. case表达式中无需使用到匹配到的变量,可以用_替代

格式

变量 match {
  case "常量1" => 表达式1
  case "常量2" => 表达式2
  case "常量3" => 表达式3
  case _ => 表达式4 // 默认匹配项
}
str match {
   case "hadoop" => println("大数据分布式存储和计算框架")
   case "zookeeper" => println("大数据分布式协调服务框架")
   case "spark" => println("大数据分布式内存计算框架")
   case _ => println("未匹配")
  }
  1. 在case校验的时候, 变量没有被使用, 则可以用_替代
def main(args: Array[String]): Unit = {
    val a:Any = 1.0

    val result = a match {
      case x:String => s"${x}是String类型的数据"
      case x:Double => s"${x}是Double类型的数据"
      case x:Int => s"${x}是Int类型的数据"
      case _ => "未匹配"
    }

	// 在case校验的时候, 变量没有被使用, 则可以用_替代.
    val result2 = a match {
      case _:String => "String"
      case _:Double => "Double"
      case _:Int => "Int"
      case _ => "未匹配"
    }
    println(result)
    println(result2)
}
  • 9
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

erainm

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值