新しい演算子を作成しようとしています:?リストでは、値がnullの場合を除いて、::と同じように動作し、元のリストが返されます。私は次のように書いていますが、私が何をしているのか本当にわからないことにすぐに気づきました。
object ImplicitList {
implicit def extendIterator[T](i : List[T]) = new ListExtension(i)
}
class ListExtension[T <: Any](i : List[T]) {
def :?[B >: T] (x: B): List[B] = if (x != null) x :: i else i
}
final case class :?[B](private val hd: B, private val tl: ListExtension[B]) extends ListExtension[B](tl.:?(hd))