Scala 中 _ 代表什么

1. 作为通配符,类似Java中的*. 如 import scala.math._

2. :_*作为一个整体,告诉编译器你希望将某个参数当做参数序列处理

val s = sum(1 to 5:_*)就是将 1 to 5 当做参数序列处理

3. 指代一个集合中的两个元素

eg:  
    例如我们要在一个Array a中筛选出偶数, 并乘以2,可以用以下这个办法 
    a.filter(_%2==0).map(2*_) 
又如要对缓冲数组ArrayBuffer b排序,可以这样: 
val bbSorted = b.sorted(_) 

4. 在元组中,可以用方法_1,_2,_3访问组员, 例如a._2 其中句点可以用空格替代

5. 使用模式匹配可以用来获取元组的组员,例如

val (first,second,third)=t 
但如果不是所有的部件都需要,那么可以在不需要的部件位置上使用_,比如上一例中val(first,second,_)=t 

6. 还有一点,下划线_代表的是某一类型的默认值.

var name = _ (前提必须是变量var 不能是val) 
对于Int来说,它的默认值为0 
对于Double来说,它的默认值是0.0 
对于引用类型来说,它是null. 

在Scala中无法直接操作方法,如果要操作方法,必须先将其转换为函数,有两种方法:

方法和函数的区别? 
    0. 答题什么相似,当函数定义在类中,就表示方法,其他的都称为函数 
    1. 函数可以作为一个参数传入到方法中,而方法就不行 
    2. 在Scala中无法直接操作方法,如果要操作方法,必须先将其转换成函数, 
        通常情况下,编译器会自动将方法转换成函数, 
        1. val fa = m _  
        //表示将m 方法转换为函数 
        //在方法名称m后面紧跟一个空格 和下划线 告诉编译器将方法转换成函数,而不是调用这个方法,也可以显示的告诉编译器需要改将这个方法转换成函数 
        val f1:(int)=>int = m 
        val l1: Seq[Int] => Int = sum1 
        print(l1(Array[Int](1, 2, 3, 45))) 
         
    3. 函数必须要有参数列表,而方法可以没有参数列表 
    4. 在函数出现的地方我么你可以提供一个方法 
        在需要函数的地方,如果传递一个方法,会自动进行ETA展开(把方法转换为函数) 
        如果我们直接把一个方法赋值给变量会报错,(Missing arguments for method sum1(Int*)) 
        如若我们指定变量的类型就是函数,name就可以通过编译 
        2. 当然我们也可以强制把一个方法转换给函数, m _ 用Scala中的部分应用函数: 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

liuyuinsdu

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

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

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

打赏作者

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

抵扣说明:

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

余额充值