私はいつもa
がnull参照ではないことを確認するためにScalaのa.ne(null)と!= nullの違いは何ですか?
a != null
を使用してきました。しかし、今私は別の方法を使用して会った:
a.ne(null)
どのように良いとはどのように違いますか?
私はいつもa
がnull参照ではないことを確認するためにScalaのa.ne(null)と!= nullの違いは何ですか?
a != null
を使用してきました。しかし、今私は別の方法を使用して会った:
a.ne(null)
どのように良いとはどのように違いますか?
@ジャックと同様にx ne null
は!(x eq null)
に等しい。 x != null
とx ne null
の違いは、!=
が値の等しいかどうかをチェックし、ne
が参照の同等性をチェックするということです。
例:前記@drexinと@Jackに加え
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
、ne
はAnyRefで定義され、唯一の参照タイプが存在します。
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
"参照型のみに存在する" Scalaには値の型があるのですか? – Ivan
ええと、[はい](http://www.scala-lang.org/api/current/scala/AnyVal.html) –
私はスカラについてはわかりませんが、nullかどうかわからない場合は、一般的にオブジェクトのメソッドを呼び出すのは良くありません。多くの言語では、これは 'NullPointerException'を引き起こします。 – yoshi
@yoshi:これはScalaでは当てはまりませんが、実際には 'null.eq(null)'は完全に有効で 'true'を返します(' ne'は!(this eq that) ')を意味します) – Jack
あなたの特定の質問:http://stackoverflow.com/questions/7055299/whats-the-difference-between-null-last-and-null-eq-last-in-scala – assylias