如果你强迫自己永远不要使用get,你会得到Option的更好的点。这是因为get相当于“确定,送我回到空地”。

所以,拿你的例子。你如何调用显示而不使用get?这里有一些替代方案:

getPerson2 foreach (_.display)

for (person

getPerson2 match {

case Some(person) => person.display

case _ =>

}

getPerson2.getOrElse(Person("Unknown", 0)).display

这些替代方法都不会让你调用显示在不存在的东西。

至于为什么存在,Scala不告诉你你的代码应该如何写。它可以轻轻地刺激你,但如果你想回到没有安全网,这是你的选择。

你把它钉在这里:

is the only advantage of Option[T] is

that it explicitly tells the

programmer that this method could

return None?

除了“唯一”。但让我以另一种方式重申:Option [T]对T的主要优点是类型安全。它确保你不会发送一个T方法到一个可能不存在的对象,因为编译器不会让你。

你说你必须在这两种情况下测试可空性,但如果你忘记 – 或不知道 – 你必须检查null,编译器会告诉你吗?或者您的用户?

当然,因为它与Java的互操作性,Scala允许null,就像Java一样。所以,如果你使用Java库,如果你使用写得不好的Scala库,或者如果你使用写得很差的个人Scala库,你仍然必须处理空指针。

选项I的其他两个重要优点是可以想到的是:

>文档:方法类型签名将告诉你是否总是返回一个对象。

>单能组合性。

后者需要更长的时间才能完全理解,它不是很适合简单的例子,因为它只显示其复杂的代码的实力。所以,我会举一个例子如下,但我很清楚,它几乎不会有什么,除了已经得到它的人。

for {

person

email

} yield (person, email)

java option作用_java – 类Option [T]的意义是什么?相关推荐

  1. java comparable接口作用_Java 中 Comparable 接口的意义和用法

    一, 为何需要实现Comparable接口 我们知道Collections类中包含很多对实现Collection接口的容器各种操作的静态方法. 当然, 其中最长用的莫过于排序了(Collections ...

  2. java类与对象作用_Java类与对象

    ●类和对象的关系: 一:类是对同一类事物(对象)的抽象,对象实际存在的该类的各种实体. 二:面向对编程的核心:找合适的对象来做合适的事. 三:Java中找到对象: 1):sun自己定义好的类,必须知道 ...

  3. java wrapper作用_java Wrapper类基本用法详解

    在封装中有一种特殊的类,能够把基本的数据类型进行转换来方便实际的使用.我们在之前提到的一些数据类型,最明显的特征是所有字母为小写状态,那么经过wrapper的包装后,首字母就变成了大写.下面我们就这种 ...

  4. java初始化实例化_Java 类初始化和实例化以及多态理解

    前言 本篇主要讲解了类的初始化.实例化.静态代码块.构造器.getClass().super.this 等相关的知识点,做一个总结. demo 老规矩,看代码: Father.java public ...

  5. java控制面板作用_Java

    1. JAVA 的特性和优势 (1) Java的核心优势 跨平台/可移植性 (2) 其他特性 安全性:面对对象:简单性:高性能:分布式:多线程:健壮性: ① 强大的生态系统 (3) Java与C++的 ...

  6. java无参_Java——类的无参、带参方法

    >类的无参方法 什么是类的方法 类是由一组具有相同属性和共同行为的实体抽象而来.对象执行的操作是通过编写类的方法实现的.显而易见,类的方法是一个功能模块,其作用是"做一件事情" ...

  7. java finalize 作用_Java编程之详解finalize

    前言 finalize()是Object的protected方法,子类可以覆盖该方法以实现资源清理工作,GC在回收对象之前调用该方法. finalize的作用 (1)finalize()与C++中的析 ...

  8. java 属性 方法_Java类的属性与方法

    <Java类的属性与方法>由会员分享,可在线阅读,更多相关<Java类的属性与方法(24页珍藏版)>请在人人文库网上搜索. 1.教师: 班级:,第11讲 类的方法,回顾,1.成 ...

  9. java泛型方法作用_java泛型的作用与使用方法是什么?

    泛型,即"参数化类型".一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参.那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变 ...

最新文章

  1. Android 与 JS 的交互 以及 JS与Android 的交互
  2. 防止论坛批量小广告指南
  3. 使用SmsManager服务群发短信
  4. 如何使用 Python 进行时间序列预测?
  5. 2.异步回调检测线程结束
  6. html匹配属性正则表达式,正则表达式匹配html标签的属性值
  7. HashMap 源码阅读
  8. ubuntu 安装配置mysql
  9. centOS安装openoffice4.1.6 并解决字体乱码
  10. 翼支付高速发展背后,甜橙金融的云化智能变革
  11. UE4_虚幻引擎4多人联机基础知识和客户端服务器通信机制详解
  12. 如何在bat文件中切换盘符并执行命令
  13. 华为AR1220路由器配置GRE隧道
  14. 新浪服务器mysql_php新浪云链接mysql与storage
  15. 推荐系统实战 --- 基于音乐播放推荐
  16. Python使用selenium模拟登陆,截取图片验证码并转化为base64
  17. ubuntu下查看电脑系统信息
  18. 2016年11月16日18:39:32
  19. 计算机环境安全容器服务未启动怎么解决,音频服务未运行|音频服务未启动 - 音频服务未运行的解决办法 - 安全专题...
  20. C语言中的字符串转数字函数常见问题详解

热门文章

  1. 实现虚拟xp与主机xp之间的文件共享
  2. 维基链Defi时代,生态完善,持续输出
  3. BCH升级辩论仍在继续:BU提出一项新的硬分叉策略
  4. 比特币现金是否失去了去中心化
  5. 解决Lync联盟用户之间只能IM聊天不能进行A/V呼叫问题
  6. 如何做好Code Review:思考、方法和实践
  7. 你应该了解的 5 个 JavaScript 调试技巧
  8. .NET版本与CLR版本及兼容性
  9. h5 移动端 常见 重要问题记录
  10. 解决Maven工程中报 Missing artifact jdk.tools:jdk.tools: