2017-09-22 59 views
-2

让我们说一个方法method1("abc")返回Some()。 当method1("abc")的返回值是None而我对其执行method1("abc").method时会发生什么?斯卡拉:将None.method导致错误

我没有安装scala,也不打算很快。我浏览了一些关于scala的博客,这个问题突然出现了。网络搜索没有给出具体的答案。

+2

您可以在提出基本问题之前多做点练习...... – Pavel

+0

@Pavel正如我所说的,我不打算安装scala。阅读完一小时后,我没有在网上找到答案。我没有预料到一个奇怪的查询downvote! – Sighil

+2

如果你不打算安装scala,这个问题的答案不太可能对你有用。 – Dima

回答

1

时方法1( “ABC”)的返回值是无我 执行方法1( “ABC”)会发生什么。方法就可以了

你不能。如果您的退货类型为Option[String],那么您实际上没有处理String,而是一个货柜。这意味着String方法将不会显示给您。为了去容器,你需要使用方法上Option[T]其这样做,就像map

def foo(): Option[String] = ??? 

val res: Option[String] = foo() 
val length: Option[Int] = res.map(str => str.length) 

Option.map是知道的事实是,选项可能None。在这种情况下,map方法中的函数将不会执行,但您会发现这些方法始终将我们保留在容器的上下文中。

1

None不是null。这是一个普通的对象和方法调用不会导致NullPointerException。这是使用Option的好处之一,而不是仅仅把事情做成空。

导致异常的唯一方法是get这是一种不安全的方法,用于从选项中提取值,只有在确定您有某个选项时才应使用该选项。即使如此,Option.get也不是最常用的。