簡體   English   中英

這個Scala類型參數聲明是什么意思? [A:B]

[英]What does this Scala type-parameter declaration mean? [A:B]

最近,我看到了一個類似於此定義的特征:

trait Server[T, Reader[_], Writer[_]] {
  def read[Result:Reader](t: T): Result
  def write[Result:Writer](r: Result): T
}

原始定義來自“ autowire”項目

[Result:Reader][Result:Writer]部分的確切含義是什么?

如何解釋? 讀者,作家和結果之間是什么關系?

結果-讀寫方法的類型參數化。 它可以是T,但是T已用於特征定義中,因此作者為類型形參選擇了更長的名稱。

:Reader和:Writer-表示它應該在Result類型范圍內的Reader和Writer類型類

有關上下文范圍的更多信息,請參見: http : //docs.scala-lang.org/tutorials/FAQ/context-and-view-bounds.html

可以這樣重寫:

trait Server[T, Reader[_], Writer[_]] {
  def read[Result](t: T)(implicit reader: Reader[Result]): Result
  def write[Result](r: Result)(implicit writer: Writer[Result]): T
}

但是,特質定義中根本不使用Result有點奇怪。 但是,完全可以。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM