Можно ли реализовать `??` (нулевой оператор объединения из C#) в Scala, который не использует отражение?

Я где-то нашел реализацию оператора объединения NULL '??' в C#:

implicit def coalescingOperator[T](pred: T) = new {
  def ??[A >: T](alt: =>A) = if (pred == null) alt else pred
}

Затем его можно использовать как a ?? bчто означает if (a == null) b else a.

И после декомпиляции файлов классов я увидел, что он производит код с отражением (в Scala 2.8.1).

Почему он генерирует отражение и можно ли изменить этот код, чтобы он не генерировал отражение?

6
задан TN. 28 May 2012 в 16:05
поделиться