我在某处找到了 C# 空合并运算符'??'的实现:
implicit def coalescingOperator[T](pred: T) = new {
def ??[A >: T](alt: =>A) = if (pred == null) alt else pred
}
然后可以像a ?? b
which mean一样使用它if (a == null) b else a
。
在反编译类文件后,我看到它生成了带有反射的代码(在 Scala 2.8.1 中)。
为什么它会产生反射,是否可以修改该代码使其不会产生反射?