Scala中下划线‘_’的作用——十三种作用

Scala中下划线 ‘_’ 的作用

最近学习了Scala编程,发现Scala是真的很简洁,Java需要几行乃至几十行的代码去实现,而用Scala就需要一行或几行就能完成!当然,要想做到代码的简化、简洁,下划线_的作用就少不了,下面呢是我学习过程中对_作用的一些总结,方便自己随时查看,同时希望这对你们有所帮助!——瑞思拜

1、方法转化为函数
def m1(x:Int,y:Int)=x*y    
	val f1=m1 _
2、集合中的每一个元素
val list=List(1,2,3,4)
val list1=list.map(_* 10)
3、获取元组Tuple中的元素
val t=("hadoop",3.14,100)
    t._1
    t._2
    t._3
4、模式匹配
val word="hadoop"
val result=word math{
    case "hadoop" => 1
    case "spark" => 2
    case _	=> 0//以上都没有被匹配到才会被执行,相当于java中的default
}
5、队列
val list=List(1,2,3,4)
list match{
    case List(_,_*) => 1
    case _ => 2
}
6、导入包的时候
//通配符,类似Java中的
import java.util.*

import scala.collection.mutable._
//表示引入的时候将scala.collection.mutable包下面所有的类都导入

import java.util.{Date =>_,_}
//在java.util包下将Date屏蔽
7、初始化变量
var name:String=_
//在这里,name也可以声明为null,例:var name:String=null。这里的下划线和null的作用是一样的。
var age:Int=_
//在这里,age也可以声明为0,例:var age:Int=0。这里的下划线和0的作用是一样的。
8、函数中使用
val set=setFunction(3.0,_:Double)
     println(set(7.1))
//Scala中特有的“偏函数”用法
9、传参
val result=sum(1 to 5: _*)
//当函数接收的参数不定长的时候,假如你想输入一个队列,可以在一个队列后加入“:_*”,因此,这里的“1 to 5”也可以改写为:“Seq(1,2,3,4,5)”。
printArgs(List("a", "b"): _*)
//将集合中的元素传给printArgs方法
10、类型通配符
def printList(list: List[_]): Unit ={
   list.foreach(elem => println(elem + " "))
}//打印出所有List类型元素
11、将函数赋给变量
//如果尝试将函数直接赋值给一个变量,这个函数会被直接调用,并将调用的结果赋值给变量,如果在函数名称后面加上_,那么赋值的是函数体本身
class Test {
    def fun = {
        // Some code
    }
    val funLike = fun _
}
12、参数展开
def getConnectionProps = {
    ( Config.getHost, Config.getPort, Config.getSommElse, Config.getSommElsePartTwo )
}

如果客户端需要拿到所有连接参数

val ( host, port, sommEsle, someElsePartTwo ) = getConnectionProps

如果仅仅需要拿到hostport

val ( host, port, _, _ ) = getConnectionProps
13、简化函数
val nums = List(1,2,3,4,5,6,7,8,9,10)

nums filter (_ % 2 == 0)

nums reduce (_ + _)

nums.exists(_ > 5)

nums.takeWhile(_ < 8)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

ChlinRei

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

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

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

打赏作者

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

抵扣说明:

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

余额充值