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的核心原则,从而让我在编程中获得新的概念和设计理念,我认为这非常有价值。如果您对概念和设计原则感兴趣,请阅读一本关于概念和设计原则的书。问一些基本的语法问题,而不打算使用这些语法,并不能让你更接近这个目标。