scala中的get方法有什么作用?

Tan*_*nvi -6 scala

post("/api/v1/multi_preview/create"){
    val html = getParam("html").get
    val subject = getParam("subject").get
 }
Run Code Online (Sandbox Code Playgroud)

我想知道.get方法在scala中的确切含义.getParam()已经将参数返回到post hit.我知道.get会使它变得更容易,因为我们不必"匹配"来检查空值,因为它会在前一种情况下自动抛出异常.还有更多的东西比满足眼睛吗?

Fel*_*lix 11

它通常是选项上的一个函数(即Some或None).它会获取包含的元素(如果存在),否则会抛出NoSuchElementException.

http://www.scala-lang.org/api/current/index.html#scala.Option

scala> val x:Option[Int] = Some(42)
x: Option[Int] = Some(42)

scala> x.get
res2: Int = 42

scala> None.get
java.util.NoSuchElementException: None.get
  at scala.None$.get(Option.scala:322)
  ... 32 elided
Run Code Online (Sandbox Code Playgroud)

作为旁注,你应该尽量避免使用,get因为它会让你回到空指针异常的土地上.相反,尝试使用getOrElse,或继续通过高阶功能,如用你的期权价值map,filter,fold,reduce等.

以下是您可以如何使用它的示例:

scala> def foo(opt:Option[Int]) = opt map (_+2) filter (_%2 == 0) map (_+1)
foo: (opt: Option[Int])Option[Int]

scala> foo(Some(40))
res4: Option[Int] = Some(43)

scala> foo(Some(41))
res5: Option[Int] = None

scala> foo(None)
res6: Option[Int] = None
Run Code Online (Sandbox Code Playgroud)

如果您不直接"触摸"它,您可以假装始终指定该值.