让我们说一个方法method1("abc")
返回Some()
。 当method1("abc")
的返回值是None
而我对其执行method1("abc").method
时会发生什么?斯卡拉:将None.method导致错误
我没有安装scala,也不打算很快。我浏览了一些关于scala的博客,这个问题突然出现了。网络搜索没有给出具体的答案。
让我们说一个方法method1("abc")
返回Some()
。 当method1("abc")
的返回值是None
而我对其执行method1("abc").method
时会发生什么?斯卡拉:将None.method导致错误
我没有安装scala,也不打算很快。我浏览了一些关于scala的博客,这个问题突然出现了。网络搜索没有给出具体的答案。
时方法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
方法中的函数将不会执行,但您会发现这些方法始终将我们保留在容器的上下文中。
None
不是null
。这是一个普通的对象和方法调用不会导致NullPointerException
。这是使用Option的好处之一,而不是仅仅把事情做成空。
导致异常的唯一方法是get
这是一种不安全的方法,用于从选项中提取值,只有在确定您有某个选项时才应使用该选项。即使如此,Option.get也不是最常用的。
您可以在提出基本问题之前多做点练习...... – Pavel
@Pavel正如我所说的,我不打算安装scala。阅读完一小时后,我没有在网上找到答案。我没有预料到一个奇怪的查询downvote! – Sighil
如果你不打算安装scala,这个问题的答案不太可能对你有用。 – Dima