博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
scala Option,None和Some
阅读量:6536 次
发布时间:2019-06-24

本文共 817 字,大约阅读时间需要 2 分钟。

hot3.png

option的出现是为了解决null存在各种歧义的情况。最常见的一种情况是假设我们对一个map去值,我们调用Map.get(“key”)方法,在java中如果我们得到结果为null,可能代表这个”key”存在,但是对应的value为空,也可能代表这个”key”不存在于map中。因此在scala中有了option这个类来解决返回null的问题。 

  在Java 里,null 是一个关键字,不是一个对象,所以对它调用任何方法都是非法的。但是这对语言设计者来说是一件令人疑惑的选择。为什么要在程序员希望返回一个对象的时候返 回一个关键字呢?为了让所有东西都是对象的目标更加一致,也为了遵循函数式编程的习惯,Scala 鼓励你在变量和函数返回值可能不会引用任何值的时候使用Option 类型。在没有值的时候,使用None。如果有值可以引用,就使用Some 来包含这个值。none和some是option的子类。

val temp = Map(  "a" -> "A",  "b" -> "B",  "c"->"C",  "d"->"D","e"->null)println( "a: " + temp.get("a").get )println( "b: " + temp.get("b").get )println( "e: " + temp.get("e").get)//会报Exception in thread "main" java.util.NoSuchElementException: None.get错//println( "f: " + temp.get("f").get)println( "f: " + temp.get("f").getOrElse("F"))

输出如下:

a: Ab: Be: nullf: F

 

转载于:https://my.oschina.net/u/2000675/blog/1802246

你可能感兴趣的文章
十五天精通WCF——第二天 告别烦恼的config配置
查看>>
Qt多线程学习:创建多线程
查看>>
设计模式学习---UML常见关系的实现
查看>>
图解openssl实现私有CA
查看>>
BZOJ2213 : [Poi2011]Difference
查看>>
c++ Constructor FAQ 继续
查看>>
事务之六:spring 嵌套事务
查看>>
C#:路径
查看>>
iOS图片加载速度极限优化—FastImageCache解析
查看>>
PHP中的一些新特性
查看>>
I.MX6 Android mmm convenient to use
查看>>
[CareerCup] 13.9 Aligned Malloc and Free Function 写一对申请和释放内存函数
查看>>
Stack and Heap 堆和栈的区别
查看>>
什么是 A 轮融资?有 B轮 C轮么?
查看>>
55、Android网络图片 加载缓存处理库的使用
查看>>
svn文件提交时强制写注释
查看>>
【转载】千万级规模高性能、高并发的网络架构经验分享
查看>>
jsp字段判空
查看>>
OC基础--OC中的类方法和对象方法
查看>>
ubuntu samba服务器多用户配置【转】
查看>>