【发布时间】:2012-04-03 23:47:40
【问题描述】:
我正在尝试创建一个新的运营商:?在列表上,其操作与 :: 相同,但如果值为 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))
【问题讨论】:
-
在 Scala 中应该避免使用
null;请改用Option。null确实只是为了与 Java 的互操作性而存在。
标签: list scala coalesce extending