#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. Я не уверен, что понимаю вопрос. Какую операцию «пользовательское пространство» вы имеете в виду, под чьим колпаком вы пытаетесь заглянуть?