在 Scala 中的参数列表之前 [] 这些括号的用途是什么 class
what is the use of [] these brackets in case class before parameter list in scala
也许我的问题似乎不成立,但我无法理解代码中的概念。
这是代码
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
也许我的问题似乎不成立,但我无法理解代码中的概念。 这是代码
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