转载 | Scala 如何避免使用 Null
2021/5/8 10:55:22
本文主要是介绍转载 | Scala 如何避免使用 Null,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
在 Java 里,null 是一个关键字,不是一个对象,所以对它调用任何方法都是非法的。
Scala 的 Option类型
Scala在变量和函数返回值可能不会引用任何值的时候使用 Option 类型。在没有值的时候,使用 None,这是 Option 的一个子类。如果有值可以引用,就使用 Some 来包含这个值。Some 也是 Option 的子类。 None 被声明为一个对象,而不是一个类,因为我们只需要它的一个实例。这样,它多少有点像 null 关键字,但它却是一个实实在在的,有方法的对象。
scala> val mapDs = Map(5->"five", 6->"six", 10->"ten") mapDs: scala.collection.immutable.Map[Int,String] = Map(5 -> five, 6 -> six, 10 -> ten) scala> mapDs get 5 res2: Option[String] = Some(five) scala> mapDs get 7 res3: Option[String] = None scala>
Option 有两个子类别,Some 和 None。当程序回传 Some 的时候,代表这个函式成功地给了你一个 String,而你可以透过 get() 函数拿到那个 String,如果程序返回的是 None,则代表没有字符串可以给你。
在返回 None,也就是没有 String 给你的时候,如果你还硬要调用 get() 来取得 String 的话,Scala 一样是会抛出一个 NoSuchElementException 异常给你的。
scala> val mapMixd = Map(5->"five", 6->"six", 10->"ten", "value"->77, 2->10) mapMixd: scala.collection.immutable.Map[Any,Any] = Map(5 -> five, 10 -> ten, 6 -> six, 2 -> 10, value -> 77) scala> mapMixd get 2 res5: Option[Any] = Some(10) scala> mapMixd get 4 res6: Option[Any] = None
这时就用到另外一个方法 getOrElse。这个方法在这个 Option 是 Some 的实例时返回对应的值,而在是 None 的实例时返回传入的参数。换句话说,传入 getOrElse 的参数实际上是默认返回值。
scala> mapMixd get 4 getOrElse "no value" res7: Any = no value scala> mapMixd get 2 getOrElse "no value" res8: Any = 10
部分参考自 https://www.jianshu.com/p/95896d06a94d
这篇关于转载 | Scala 如何避免使用 Null的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-26UniApp 中如何实现使用输入法时保持页面列表不动的效果?-icode9专业技术文章分享
- 2024-11-26在 UniApp 中怎么实现输入法弹出时禁止页面向上滚动?-icode9专业技术文章分享
- 2024-11-26WebSocket是什么,怎么使用?-icode9专业技术文章分享
- 2024-11-26页面有多个ref 要动态传入怎么实现?-icode9专业技术文章分享
- 2024-11-26在 UniApp 中实现一个底部输入框的常见方法有哪些?-icode9专业技术文章分享
- 2024-11-26RocketMQ入门指南:搭建与使用全流程详解
- 2024-11-26RocketMQ入门教程:轻松搭建与使用指南
- 2024-11-26手写RocketMQ:从入门到实践的简单教程
- 2024-11-25【机器学习(二)】分类和回归任务-决策树(Decision Tree,DT)算法-Sentosa_DSML社区版
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享