2015-10-01 2 views
1

Возможно, мои вопросы кажутся недействительными, но я не могу понять концепцию в коде. Вот кодчто использовать [] эти скобки в случае класса перед списком параметров в 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] 

Я никогда не использовал [] эти скобки перед прохождением списка параметров в Скале так я смог вещь. Я также путаюсь по этой линии

, body: Body) 

Что такое Body? Почему именно в этих квадратных скобках Пожалуйста, помогите мне и извините, если я спрашиваю что-то, что не имеет смысла.

+3

Проведите некоторое исследование по общим классам Scala. – wwkudu

+1

'Body' - это параметр типа. Это может показаться вам незнакомым, поскольку параметры типа чаще всего имеют однобуквенные имена. –

ответ

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")) 

В этом случае вы используете инвариантный параметр типа - органа. Существуют также контравариантные параметры ковариантного типа:

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

большое вам спасибо – swaheed

 Смежные вопросы

  • Нет связанных вопросов^_^