2016-08-04 91 views
0

我有一個案例類案例類不具有複製方法

case class Oauth2Request[A](
    foo: String, 
    request: Request[A] 
) extends WrappedRequest[A](request) { 
    def bar = foo 
} 

(這是play.api.mvc.WrappedRequest)與

val wrappedRequest = Oauth2Request("foo",otherRequest) 
val publicApiRequest = wrappedRequest.copy(request=apiRequest) 
後來實例

出來像這樣在我的IDE autocompletion

最終的結果看起來像error與編譯錯誤

not found: value request 

爲什麼複製方法將看起來像WrappedRequest的構造函數的參數而不是複製方法我期望可以用來複制/更改原始對象的1個或多個字段?

回答

0

正如您在docs中看到的那樣WrappedRequest而不是個案類。但是它有一個複製方法,正如IDE向您展示的那樣,但這些參數都不會被命名爲request

由於該類的構造函數帶有一個類型爲Request的參數,爲什麼不是new WrappedRequest(apiRequest)

+0

雖然我創建的案例類擴展了WrappedRequest,但我期望我的抽象將具有副本。另一種方法,就像你說的那樣,做Oauth2Request(「foobar」,apiRequest),但實際上有比我在這裏展示的字段更多的字段,scala的方式是去簡潔的路線(更少的代碼)。你會知道爲什麼我的案例類(Oauth2Request)沒有複製方法嗎?我相信我已經閱讀過所有的案例類都有一個複製方法 – irregular