赞
踩
今天参加字节跳动大数据岗位的面试。在开始说明实际面试问题之前,大家可以先思考一个问题:Scala中None跟null的区别是什么?它们之间的关系又是什么?
----------分界线:以下是实际面试问题讲解----------
如果有一个类A,里面有函数func。存在以下代码
- case class A() {
- def func: Unit = println("Func in A")
- }
-
-
- val a: A = A() // null
- val b = Some(a)
如何用b正确的使用func函数?
以下两种写法在a = null时都可以避免NullPointerException的出现:
第一种写法。因为b是Some类型,所以直接用Some来匹配即可,x其实就是匹配的a。若a = null时,匹配出来x也等于null
- b match {
- case Some(x) =>
- if (x == null) {
- println("null")
- } else {
- x.func
- }
- }
第二种写法。可以先让特殊情况null匹配了之后,再匹配其余的情况
- b match {
- case Some(null) =>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。