scala如何使用类内获取选项

scala如何使用类内获取选项,scala,Scala,可能重复: 我的项目有问题 如何从值[some(test)]中检索数据,并仅获取(test)only的值。那么使用get方法呢 或 如何将value:[some(test)]的形式更改为“test”,基本上,永远不要使用get()。在任何情况下,这都是一个比其他选择更好的选择。选项是在类型系统中指示函数可能不会返回所需内容的一种方式。您可以将其视为包含0或1个内容的集合 看一看显示了几种处理选项的不同方法的示例;作为一个集合,使用map/flatMap、getOrElse进行理解和模式匹配 e

可能重复:

我的项目有问题

如何从值[some(test)]中检索数据,并仅获取(test)only的值。那么使用get方法呢

如何将value:[some(test)]的形式更改为“test”,基本上,永远不要使用get()。在任何情况下,这都是一个比其他选择更好的选择。选项是在类型系统中指示函数可能不会返回所需内容的一种方式。您可以将其视为包含0或1个内容的集合

看一看显示了几种处理选项的不同方法的示例;作为一个集合,使用map/flatMap、getOrElse进行理解和模式匹配

e、 g.地图:

val maybeData : Option[String] = Some("test")  // or None
val maybeResult = maybeData.map(x : String => doSomethingWithAString(x))
如果maybeData为None,则什么也不会发生。如果是Some(),则返回一个包含doSomethingWithAString()结果的选项。注意,这将是选项[B],其中B是doSomethingWithAString的返回类型

e、 g.getOrElse:

val maybeData : Option[String] = Some("test")  // or None
val result : String = maybeData.getOrElse("N/A")
如果数据是一些,则结果为“测试”,否则为“不适用”

e、 g.模式匹配:

val maybeData : Option[String] = Some("test")  // or None
val result : String = maybeData match {
  case Some(x) => doSomethingWithAString(x)
  case None => "N/A"
}
您得到了图片(注意,这假设doSomethingWithAString返回字符串)


如果您使用get()并且maybeData为None,那么您将获得处理与null指针等价的数据的乐趣。没有人希望这样。

这个问题很令人困惑。请查看有关
选项的其他问题,如果您还有问题,请尽量澄清。非常感谢。。。布里恩·史密斯先生