Цитата:
Как это происходит в обычном операторе сравнения?) |
Цитата:
|
сравнить таблицы с вложенными таблицами, это просто.
Но дело том что они могут быть цикличными. тут происходит анализ на цикличность.. и если наш скрипт смотрит что ссылка ведет на обьект который уже был получен ранее (фиксируется кольцевание кольцевание) , и этот обьект щас в стеке проверки. то тогда сравниваются названия ключей этого обьекта(из стека) и сравниваемого обьекта. если есть разница в названиях ключей, то обьекты не равны. если нет разницы, но кольцевание продолжается, тогда обьекты считаются разными, и продолжается анализ дальше, если там не найдено расхождений. то обьекты считаются раЗными из-за неопределенности. Иными словами таким методом хорошо закрученные обьекты не сравнить. Это ЕСЛИ этот метод на js делать, а если делать на уровне движка, то тут любые обьекты сравнить можно. |
Цитата:
JS - тьюринг полный, так что на нем можно решить тот же класс задач, что и на уровне движка. Так что "хорошо закрученные объекты" можно с одинаковым успехом сравнивать как на уровне движка, так и на уровне JS Тот алгоритм, который ты привел - не позволяет их сравнить. [telepatemode] Может быть тебе не хватает функции получения адреса объекта в памяти? Средствами JS вполне можно написать функцию, возвращающую "виртуальный" адрес в памяти, основываясь на стандартном операторе сравнения объектов. Но, это так - предположение чего тебе не хватает. [/telepatemode] В общем все-таки хотелось бы увидеть алгоритм для "хорошо закрученных объектов" |
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
У вас спросили, как бы вы сравнивали два объекта с рекурсивными ссылками, а я развил эту мысль. А развил я ее, потому что интересующий вас механизм сравнения объектов не является таким уж очевидным с точки зрения алгоритма. Практической пользы для меня от данного алгоритма - ноль Чисто академический интерес, потому что я не вижу однозначного алгоритма, который бы работал для таких сложных объектов. В вас же я заметил как практический, так и академический интерес к этой задаче. Возможно и ошибся) Поэтому, я и предложил вам формализовать ваш алгоритм до конца. Если вам этот алгоритм не нужен, и вам в практических целях достаточно стандартного сравнения объектов, то можете не реализовывать его. А если все-таки нужен, то я бы с удовольствием посмотрел бы на вашу реализацию - потому что сам я пока не смог придумать алгоритм, решающий данную задачу. |
Gvozd - рассматривать объект как граф и помечать посещённые узлы, как-то так. Но алгоритм будет... Пиздец)
|
Часовой пояс GMT +3, время: 20:54. |