scala学习手记19 - Option类型

本文介绍了Guava中的Optional类和Scala中的Option类,旨在避免直接使用null值。通过具体示例展示了如何使用Some[T]和None来处理可能为空的情况,并强调了在Scala中声明Option类型变量时的注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

看到Option类型就知道这本教材应该要说那个了。

使用过guava后,应该知道guava中的Optional类的作用是什么。算了找下原始文档好了:

Optional<T> is a way of replacing a nullable T reference with a non-null value. An Optional may either contain a non-null T reference (in which case we say the reference is "present"), or it may contain nothing (in which case we say the reference is "absent"). It is never said to "contain null."

一句话,Guava中的Optional的作用是避免直接使用null。

scala中Option类的作用和Guava的Optional的意义是一致的。它们的意义在于两点:

  1. 增强null值的可读性,表达“我就是希望没有结果”的 意愿;
  2. 出于代码可用性考虑,强迫开发者主动检查对象的值是否为null。

看个例子:

def commentOnPractice(input: String) = {
  //rather than returning null
  if (input == "test") Some("good")
  else
    None
}
for (input <- Set("test", "hack")) {
  val comment = commentOnPractice(input)
  println("input " + input + " comment " + comment.getOrElse("Found no comments"))
}

代码中的commentonPractice()也许会返回一个字符串,也许什么都不会返回。在这个方法里使用了Some[T]和None实例分别应对了可能出现的两种情形。Some[T]和None都是Option[T]的子类。先看一下执行结果:

image

将类型显式声明为Option[String],Scala会强制我们检查实例的不存在。如此一来,就不太可能因为没有检查null引用而抛出NullPointerException。调用返回Option[T]的getOrElse()方法,可以主动的应对结果不存在(None)的情形。

就这样。

########

转载于:https://www.cnblogs.com/amunote/p/5612451.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值