I have been always using
a != null
to check that a
is not a null reference. But now I've met another way used:
a.ne(null)
what way is better and how are they different?
Like @Jack said x ne null
is equal to !(x eq null)
. The difference between x != null
and x ne null
is that !=
checks for value equality and ne
checks for reference equality.
Example:
scala> case class Foo(x: Int)
defined class Foo
scala> Foo(2) != Foo(2)
res0: Boolean = false
scala> Foo(2) ne Foo(2)
res1: Boolean = true
Besides that said @drexin and @Jack, ne
defined in AnyRef and exists only for referential types.
scala> "null".ne(null)
res1: Boolean = true
scala> 1.ne(null)
<console>:5: error: type mismatch;
found : Int
required: ?{val ne: ?}
Note that implicit conversions are not applicable because they are ambiguous:
both method int2Integer in object Predef of type (Int)java.lang.Integer
and method intWrapper in object Predef of type (Int)scala.runtime.RichInt
are possible conversion functions from Int to ?{val ne: ?}
1.ne(null)
scala> 1 != null
res2: Boolean = true
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With