Scala中_ 的理解

1.通配符
*在Scala 中是合法的方法名,所以导入包时使用_代替
import java.util._

//java 
import java.util.*;
//Scala
import java.util._

2.类成员默认值
1)java中类成员可以不赋初始值,编译器会自动帮你设置一个合适的初始值

class function {
  //String类型的默认值是 null
  private String str;
}

2)在Scala中必须显示指定,也可以使用 _ 让编译器帮你设置初始值
即: var s:String = _

class Function{
//String类型的默认值为null
  var str:String =_
}

语法只适用于类成员,而不适用于局部变量
3.可变参数
Java声明可变参数如下:

public static void prints(String...args){
   for(Object ele:args){
      System.out.println(ele + " ");
   }
}

调用方法如下:

//传入两个参数
prints("a","b");
//也可以传入一个数组
prints(new String[]{"a","b"});

在Java中可以直接将数组传给prints方法,但是在Scala中,你必须要明确的告诉编译器,你是要将集合作为一个独立的参数传进去,还是想将 集合的元素传进去,如果是后者则更要借助下划线:

prints(List("a","b"):_*)

4.类型通配符
Java的反省系统有一个通配符类型,例如List<?>,任意的List类型都是List<?>的子类型,如果我们先更便携一个可以打印所有List类型元素的方法,可以声明如下:

public static void printList(List<?> list){
   for(Object ele: list){
      System.out.println(ele +" ");
   }
}

对应Scala版本:

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

5.模式匹配
5.1默认匹配

//匹配以0开头,长度为3的列表
str match{
  case List(0,_,_)=>println("found it")
  case _  =>
}

5.2匹配集合元素

//以匹配0开头,长度为三的列表
 expr match {
    case List(0,_,_) => println("found it")
    case _ => println("其他")
 }
 //以匹配0开头,长度任意的列表
 expr match {
 case List(0,_*) => println("found it")
 case _ =>
}
//匹配元素元素
expr match{
case (0,_) => println("found it")
case _ =>
}
// 将首元素赋值给head变量
val List(head,_*)=List("a")


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值