функция python id() эквивалентна для scala 3?

#python #scala

Вопрос:

Я поискал в Интернете, чтобы узнать, могу ли я найти такую функцию, как id() в Python, которая возвращает уникальный идентификатор объекта. Кто — нибудь знает, существует ли это?

Комментарии:

1. Может hashCode быть ? Хотя было бы лучше, если бы вы могли объяснить, в чем заключается мета-проблема, которую вы пытаетесь решить

2. @j1-lee ОП просит решение в Scala, а не в Python.

Ответ №1:

В отсутствие других требований, я думаю, что Java System.identityHashCode() выполнит то, что вы ищете.

Однако обратите внимание, что (как и в Python!) трудно точно предсказать, когда разные объекты будут иметь одинаковый идентификационный хэш-код, из-за таких вещей, как вставка:

 scala> val x = 1
x: Int = 1

scala> val y = 1
y: Int = 1

scala> (System.identityHashCode(x), System.identityHashCode(y))
res0: (Int, Int) = (198625530,198625530)

scala> val x = 1729
x: Int = 1729

scala> val y = 1729
y: Int = 1729

scala> (System.identityHashCode(x), System.identityHashCode(y))
res1: (Int, Int) = (46967127,642830322)
 

Комментарии:

1. Хорошо, большое вам спасибо за ответ! Это отлично работает. Как scala 3 под капотом проверяет равенство ссылок, т. Е. указатели/ссылки на один и тот же объект?

2. Я не уверен, что понимаю вопрос. Какую операцию «пользовательское пространство» вы имеете в виду, под чьим колпаком вы пытаетесь заглянуть?