post("/api/v1/multi_preview/create"){
val html = getParam("html").get
val subject = getParam("subject").get
}
我想知道.get方法在scala中的作用。 getParam()已经将参数返回到post hit。我知道.get会使它更容易,因为我们没有“匹配”来检查空值,因为它会在前一种情况下自动抛出异常。 还有更多的东西比满足眼睛吗?
答案 0 :(得分: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
作为旁注,您应该尽量避免使用get
,因为它会让您回到空指针异常的范围内。相反,请尝试使用getOrElse
,或继续通过高阶函数使用您的Option值,例如map
,filter
,fold
,reduce
等。< / p>
以下是一个如何使用它的例子:
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
如果你没有触摸&#34;你可以假装总是指定值。直接。
答案 1 :(得分:2)
我认为这是一些Scalatra
相关代码,如果是这样的话,getParam
会返回Option。 Option
是一个包装类型的包装器,允许您避免检查null
(以及其他类型的实用程序),实际上包含在Option
中的值可以是{ {1}},在这种情况下,您可以使用get来访问该值,例如
Some
或者可以是val someString = Option("some text")
println(someString.get) // prints "some text"
,在这种情况下,当您调用None
时会收到异常,值为get
或Some
可通过参数匹配确定< / p>
None
或使用someOption match {
case Some(value) => doSomething(value)
case None => doSomethingElse()
}
如果isDefined
则返回true,如果Some
则返回false。
请注意,您的代码可能会抛出异常,因为您在不知道它是None
还是get
的情况下调用Some
,您应该使用返回值的None
如果存在任何或默认指定参数,则选项成立:
getOrElse