最近,我看到了一个类似于该定义的特征:
trait Server[T, Reader[_], Writer[_]] {
def read[Result:Reader](t: T): Result
def write[Result:Writer](r: Result): T
}
[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有点奇怪。但是,完全可以。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句