2011-07-26 12 views

Odpowiedz

54

Funkcja szukasz jest eq, który jest członkiem AnyRef:

val x = new Obj 
val y = x 
x eq y // evaluates to true 
x ne y // evaluates to false 
+1

Dziękujemy! Dla przypomnienia, jest to udokumentowane tutaj: http://www.scala-lang.org/api/current/scala/AnyRef.html –

+3

I jego odwrotnością jest 'ne'. Najprawdopodobniej będziesz chciał użyć go w notacji infiksowej. Zauważ, że 'eq',' ne', '==' i '! =' Nie wyrzucają 'NullPointerException', gdy obiekt docelowy ma wartość NULL, nawet jeśli może wyglądać tak, jak mógłby (szczególnie w notacji bez infiksu). –

+3

@Jean: Jeśli dodałem wiersz "val z = null" (bardzo zła forma Scala) do powyższego, czy mówisz, że z.eq (x) nie rzuci wyjątku, mimo że z jest zerowe? Byłem taki sceptyczny, poszedłem na http://www.simplyscala.com/ (dostęp online do REPL) i wypróbowałem go interaktywnie. I masz rację. To wspaniale i na pewno lepsze niż wyrzucanie NPE przez Javę. Tyvm do wyjaśnienia. – chaotic3quilibrium