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

标签 scala scala-2.11

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

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

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

case class Response[Body] 

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

, body: Body)

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

最佳答案

这些声明是相同的:

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

关于scala - scala 中参数列表之前的 case 类中的 [] 这些括号有什么用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32881091/

相关文章:

scala - 保证系统关闭时 Akka 中的日志输出刷新?

swing - Scala MouseEvent - 如何知道按下了哪个按钮?

scala - 为什么通过 jenkins 用户在构建从站上运行测试失败并缺少 scala-library.jar?

scala - 在 Scala 中过滤 Failure(t) 实例的惯用方式

java - Scala - 如何使用 Java Singleton 对象

scala - 将 mapValues 替换为 ListMap

scala - `= _` 在 Scala 属性定义中做什么

java - 运行测试时在其他模块中搜索资源文件

Scala - 具有 100 个字段的案例类 (StackOverflowError)

Scala:用于理解类型推断问题的多个 flatMap 定义