在scala中参数列表之前的case类中使用[]这些括号是什么用的

时间:2015-10-01 06:48:01

标签: scala scala-2.11

也许我的问题似乎无效但我无法理解代码中的概念。 这是代码

ILazyTreeContentProvider

在这段代码中,我对此部分感到困惑

case class Response[Body](request: Request, status: Int, headers: Map[String, Seq[String]], body: Body)

case class Request(method: String,
                     url: String,
                     state: JsValue = JsNull,
                     headers: Map[String, String] = Map.empty,
                     body: ReqBody = EmptyReqBody) extends Scraped

我在scala中传递参数列表之前从未使用过[]这些括号,所以我无法得到东西。我也对这条线感到困惑

case class Response[Body] 

什么是身体?为什么它在这些方括号中 请帮助我,如果我问的是没有意义的话,我很抱歉。

1 个答案:

答案 0 :(得分:3)

这些声明是相同的:

case class Response[Body](request: Request, ... , body: Body)
case class Response[T](request: Request, ... , body: T)
case class Response[YourPreferredName](request: Request, ... , body: YourPreferredName)

用法:

val responseWithStringBody:Response[String] = Response(..., "hello")
val responseWithIntBody:Response[Int] = Response(..., 1024)
...
val responseWithUserBody:Response[User] = Response(..., User("name"))

在这种情况下,您使用不变的类型参数 - Body。还有逆变,协变类型参数:

case class Response[Body]   // invariant (your case)
case class Response[+Body]  // covariant
case class Response[-Body]  // contravariant