Scala中的Option

Scala引入Option类型以替代null,避免NullPointerException。Option作为容器,分为Some和None两种情况,常用于集合操作的返回值。通过模式匹配、getOrElse方法及for循环处理Option,实现更安全的编程。文章介绍了Option的应用实例及其在避免空指针异常方面的优势。
摘要由CSDN通过智能技术生成

Scala中的Option

避免null使用

大多数语言都有一个特殊的关键字或者对象来表示一个对象引用的是“无”,在Java,它是null

写Java程序的时候,经常会碰到没有有意义的东西可以返回,我们返回null。

在Java 里,null 是一个关键字,不是一个对象,所以对它调用任何方法都是非法的。因此调用方必须检查返回值,不然会有NullPointerException的异常。

这逼迫我们去check函数的返回值,或者捕获异常。这都不是明智的选择。

同时还有一个例子

Map<String, String> map = ???
String valFor2014 = map.get(“1024”); // null

if (valFor1024 == null)
    abadon();
else doSomething();

null到底代表key找不到还是说1024对应的值就是null?在有些时候,会产生具有二义性的代码。

Scala的Option类型

为了让所有东西都是对象的目标更加一致,也为了遵循函数式编程的习惯,Scala鼓励你在变量和函数返回值可能不会引用任何值的时候使用Option类型。

  • Option可以看作是一个容器,容器的size是1或0;
  • size为1的时候,即有值可以引用,就是一个Some[A](x: A),如Some[String]
  • size为0的时候,即没有值的情况下就是一个None,它是Option的一个子类。None被声明为一个对象,而不是一个类,因为我们只需要它的一个实例。这样,它多少有点像null关键字,但它却是一个实实在在的,有方法的对象。

应用例子

Option类型的值通常作为Scala集合类型(List,Map等)操作的返回类型。比如Map的get方法:

scala> val capitals = Map("France"->"Paris", 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值