Scala:None.method是否会导致错误

Scala:None.method是否会导致错误,scala,Scala,假设一个方法method1(“abc”)返回Some()。 当method1(“abc”)的返回值为None并且我对其执行method1(“abc”).method时会发生什么 我没有安装scala,也不打算很快安装。我浏览了scala的一些博客,突然出现了这个问题。网络搜索并没有给出具体的答案 当method1(“abc”)的返回值为None和I时会发生什么 对其执行方法1(“abc”)。方法 你不能。如果您的返回类型是一个选项[String],那么您实际处理的不是字符串,而是容器中的一个字符

假设一个方法
method1(“abc”)
返回
Some()
。 当
method1(“abc”)
的返回值为
None
并且我对其执行
method1(“abc”).method
时会发生什么

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

当method1(“abc”)的返回值为None和I时会发生什么 对其执行方法1(“abc”)。方法

你不能。如果您的返回类型是一个
选项[String]
,那么您实际处理的不是
字符串,而是容器中的一个字符串。这意味着
String
方法对您不可见。要进入容器内部,您需要使用
选项[T]
上的方法,如
映射

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

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

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

None
不是
null
。它是一个普通的对象,方法调用不会导致
NullPointerException
。这是使用Option的好处之一,而不仅仅是将内容设为空


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

在问基本问题之前,请您多练习一下……@Pavel正如我所说,我不打算安装scala。读了一个小时后,我在网上找不到答案。我没想到一个奇怪的问题会被否决!!如果您不打算安装scala,这个问题的答案可能对您没有帮助。@Dima很抱歉,但我不同意。从我的角度来看,这将有助于我理解驱动scala的核心原则,从而让我在编程中获得新的概念和设计理念,我认为这非常有价值。如果您对概念和设计原则感兴趣,请阅读一本关于概念和设计原则的书。问一些基本的语法问题,而不打算使用这些语法,并不能让你更接近这个目标。