scala 下划线 _用法

方法转换为函数

例如:

def m1(a:Int,b:Int)=a+b   
val f1=m1(3,2)//(这个是赋值)
val f1=m1 _  //(这里将方法转变成函数)

用于导包引入

导包引入时使用_导入该包下所有内容,类比Java中的*。例如:

//java
import java.until.*
//scala
import java.utnil._

Scala类中成员变量初始化

class Test{
    //String类型的默认值为null 不适合局部变量
    var s: String = _
}

用于模式匹配

  def match1(x:Int):String={
        x match {
          case 1=>"one"
          case 2=>"two"
          case _=>"many"
        }
      }
def match6(arr:Array[String]):Unit={
      arr match{
        case Array("kb11")=>println("fsfsfsd")
        case Array(es,sf)=>println(es,sf)
        case Array("kb12",_*)=>println("k12")
        case Array(str1,str2,"BB")=>println(arr(0),arr(1),"BB")
        case _=>println("who are you")
      }
    }
2.集合中的每一个元素
例如:
val list=List(1,2,3,4)
val list1=list.map(_ * 10)

类型通配符

public static void show(List<?> list){
    for(Object elem: list){
        System.out.println(elem + " ");
    }
}
对应的Scala版本为:

def show(list: List[_]): Unit ={
   list.foreach(elem => println(elem + " "))
}

用于访问tuple元素

val t = (1, 2, (7, 9))
println(t._1, t._2, t._3._1, t._3._2)

部分函数

//    def showMsg(title: String, content: String, height: Double): Unit = {
//      println(title + " " + content + " " + height)
//    }
//
//    showMsg("jinggao", "当前河床水位线", 19.8)
//    val title: String = "警告"
//
//    def showAlarms = showMsg(title, _: String, _: Double)
//    showAlarms("部分函数 当前河床水位线", 20.1)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值