41
Scalaでの参照平等のテストはどうですか? AnyRefのメンバーであるScala参照の等価性
val x = new Obj
val y = x
x.referenceEquals(y) // evaluates to true
Scalaでの参照平等のテストはどうですか? AnyRefのメンバーであるScala参照の等価性
val x = new Obj
val y = x
x.referenceEquals(y) // evaluates to true
あなたが探している機能がeq
で、:
val x = new Obj
val y = x
x eq y // evaluates to true
x ne y // evaluates to false
ありがとうございます!記録のために、これはここに文書化されています:http://www.scala-lang.org/api/current/scala/AnyRef.html –
そしてその逆は 'ne'です。おそらく、それを中置表記で使用したいと思うでしょう。 'eq'、' ne'、 '=='、 '!='は、ターゲットオブジェクトがヌルである場合には(特に非中立表記の場合でも)、 'NullPointerException'をスローしないことに注意してください)。 –
@Jean: "val z = null"(非常に悪いScalaフォーム)の行を上記に追加した場合、zがnullであってもz.eq(x)が例外をスローしないということですか?私はこれに懐疑的で、http://www.simplyscala.com/(REPLへのオンラインアクセス)に行き、インタラクティブに試しました。そしてあなたは正しい。それはJavaがNPEを投げているよりも素晴らしいことです。明確化のためにTyvm。 – chaotic3quilibrium