gpt4 book ai didi

scala - scala中“Convert” Option [x]到x

转载 作者:行者123 更新时间:2023-12-03 11:30:43 25 4
gpt4 key购买 nike

我使用scala(2.1)进行游戏,需要将“Option [Long]”值转换为“Long”。

我知道该怎么做,我的意思是:

  def toOption[Long](value: Long): Option[Long] = if (value == null) None else Some(value)

但就我而言,我必须将“Option [Long]”的值作为类型传递给采用“Long”的方法。
请帮忙。

最佳答案

首先,您对“相反”的实现存在一些严重的问题。通过在方法上放置一个名为Long的类型参数,您可以从标准库中隐藏Long类型。您可能指的是以下内容:

def toOption(value: Long): Option[Long] =
if (value == null) None else Some(value)

甚至这都是荒谬的(因为 scala.Long不是引用类型,并且永远不能是 null),除非您引用的 java.lang.Long是痛苦和困惑的秘诀。最后,即使您处理的是引用类型(例如 String),也最好编写完全等效的以下代码:
def toOption(value: String): Option[String] = Option(value)

当且仅当 Nonevalue时,此方法才返回 null

为了解决您的问题,假设我们有以下方法:
def foo(x: Long) = x * 2

通常,您不应该考虑将 Option[Long]传递给 foo,而应该通过 fooOption提升为 map:
scala> val x: Option[Long] = Some(100L)
x: Option[Long] = Some(100)

scala> x map foo
res14: Option[Long] = Some(200)
Option的全部重点是(在类型级别)对“null”值的可能性进行建模,以避免整个 NullPointerException -y问题。在 map上使用 Option可以使您对 Option中可能存在的值执行计算,同时继续对其为空的可能性进行建模。

另一个答案是,也可以使用 getOrElse摆脱 Option,但这在Scala中通常不是惯用方法(除非确实有合理的默认值)。

关于scala - scala中“Convert” Option [x]到x,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19765713/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com