Scala_03名词解释

1.集合

val(minors,adults)=people partition(_.age<18)
我们非常清楚这个操作做的事情:我们根据年龄,将people这个集合分成minors和adults两部分。由于partition方法是建立在根集合类型上,所以这代码在任何集合上都可以运行,当然包括数组。最后的结果minors和adults集合的数据类型和people集合一样

这个代码比传统的分组的方式(建立一到三个循环,中间结果需要缓存)简介的多,partition方法更安全更快

2.解除绑定(拆解一个元组的看法)

解除数据绑定与模型匹配有关,当存在一个选择(option)时,他们使用相同的但可以接受的原理。在类别案例和元组中尤其有用

val tuple=('a',1)
val (char,digit)=tuple
val tweet=Tweet("just tweeting",Time.now )
val Tweet(text,timestamp)=tweet

3.Option

是一个容器类型,包含Some[T] or None,我们应该尽可能的使用Option而不是Null.Option是一个集合,我们可以对Option使用集合的操作符

对于

val username:String =null
...
username="foobar"
我们应该写

val username:Option[String]=None //Option[String] 这是一个String类型的容器,要么里面为 null,要么为Some(String)
...
username=Some("foobar")

后面的更加安全:Option将会静态的确保username会被检查是否为空值


对Option容器里面的值进行条件操作的时候,必须使用foreach

我们不能使用:其中的opt为option类型对象

if (opt.isDefined){
  operate(opt.get)
} 
 我们应该写成

opt foreach{
 value =>operate(value)
}
尽管后者看起来更蠢,实际上更加安全(我们不用调用opt.get方法)和简洁。

如果some(T)和null都会被用到,使用模型匹配

opt match{
case Some(value)  =>operate(value)
case None => defaultAction()
}
如果大部分默认值是空值,我们可以使用opt.getOrElse()

val numbers=Map("one"->1,"two" ->2)
numbers.get("one")  //res0:Option[Int]=Some(1)
numbers.get("three") //res1:Option[Int]=Null
res0.getOrElse(0)*2 
4.函数组合子





 






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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值