scala学习总结

1.scala中map的几种常用遍历方式.

postData.map(k => {
println(k._1)
println(k._2)
//println(v)
})
postData.foreach(k => {
println(k._1)
println(k._2)
})

for((k,v) <- postData) yield{
println(k)
println(v)
}


2.Sealed class的含义
匹配的case class是无法穷举的,Sealed class只能在和他相同的文件中定义子类,所以只需要关注当前文件的case class匹配的列举,并且如果列举不全则编译时有Warning。

sealed abstract class Expr
case class Var(name: String) extends Expr
case class Number(num: Double) extends Expr
case class UnOp(operator: String, arg: Expr) extends Expr

def describe(e: Expr): String = e match{
case Number(x) => "a number"
case Var(_) => "a variable"
}


3.trait的理解。
trait中可以包含未实现的方法,也可以包含已实现的方法
trait中的方法实现实际上是被放到一个特殊的辅助类中,这个类在每次调用方法时被引用到,使用这种方法我们不需要将方法体拷贝到每个扩展该trait的的类中去。
trait不能像class那样带型参calss xxx(val sss:String) 合法
trait xxx(val sss:String)不合法

4.yield 关键字
针对每一次 for 循环的迭代, yield 会产生一个值,被循环记录下来 (内部实现上,像是一个缓冲区).
当循环结束后, 会返回所有 yield 的值组成的集合.
返回集合的类型与被遍历的集合类型是一致的.

5.code : => Unit与code: ()=>Unit的差别
第一个是传入方法体,在传入时会立刻执行。
第二个是指传入的方法名,是一个无参数的匿名函数。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值