Как я могу гарантировать во время компиляции, что мой метод вернет тот же объект, что и в Scala?

В классе Scala я могу удобно объявить возвращаемый тип метода как this.type , чтобы гарантировать, что он вернет тот же объект, для которого он вызван:

class Foo {
  def bar: this.type = this
}

Есть ли способ аналогичным образом указать, что метод, принимающий данный параметр AnyRef , вернет именно эту ссылку? Следующий фрагмент не предоставляет эту гарантию, я мог бы вернуть любой экземпляр A :

def processAndReturn[A <: AnyRef](obj: A): A = {
  // work with obj
  obj
}
5
задан Kipton Barros 31 July 2011 в 03:30
поделиться