scala如何使用get in class选项

时间:2012-08-10 20:29:09

标签: scala

  

可能重复:
  Why Option[T] ?

我的项目有问题

如何从值中检索数据:[some(test)]并仅获取(test)的值。并使用get方法?

我如何改变价值形式:[some(test)]到“test”只是

1 个答案:

答案 0 :(得分:3)

基本上,不要使用get()。没有哪种情况比替代品更好。选项是一种在类型系统中指示函数可能无法返回所需内容的方法。您可能会将其视为包含0或1个内容的集合。

查看API docs,其中显示了处理Option的几种不同方法;作为使用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()结果的Option。请注意,这将是Option [B],其中B是doSomethingWithAString的返回类型。

e.g。 getOrElse:

val maybeData : Option[String] = Some("test")  // or None
val result : String = maybeData.getOrElse("N/A")

如果数据为Some,则结果为“test”,否则为“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返回String)。

如果使用get()并且maybeData为None,则可以快速处理等效的nullpoin。没有人想要那个。