- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
a = {}
a[{}] = 100500
local store
for i, k in pairs(a) do
print(i,k) --table, 100500
store = i
end
print(a[{}]) --nil
print(a[store]) --100500
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+14
a = {}
a[{}] = 100500
local store
for i, k in pairs(a) do
print(i,k) --table, 100500
store = i
end
print(a[{}]) --nil
print(a[store]) --100500
Sfabrikan 25.04.2016 15:36 # −2
guest 26.04.2016 00:29 # −2
автор не нужен
gost 26.04.2016 09:03 # −1
kipar 26.04.2016 21:18 # +2
> a[{}] = 100500
> print(a[{}]) --nil
guest 29.04.2016 01:52 # 0
roman-kashitsyn 29.04.2016 10:54 # +2
false
Потому что каждый литерал таблицы создаёт новый объект, и их сравнение неглубокое.
3_14dar 29.04.2016 17:28 # 0
Што?
== сравнивает равенство или идентичность?
1024-- 29.04.2016 18:17 # 0
>Што?
Объекты не сравниваются с точностью до полей и полей полей, и полей полей полей, ..., то есть структуру объекта глубоко не копают.
3_14dar 13.05.2016 20:06 # 0
1024-- 13.05.2016 20:11 # 0
3_14dar 13.05.2016 20:16 # 0
1024-- 13.05.2016 20:27 # +1
Что есть объект? Совокупность полей как таковых или иерархическое представление с учётом зависимостей?
Если первое, то неглубокое сравнение, отличаемое от сравнения идентичности ссылок не должно отличаться от глубокого, т.к. нет необходимости проходить по ссылкам.
Соответственно, различая неглубокое и глубокое сравнение, мы различаем алгоритмы по наличию или отсутствию сравнения идентичности ссылок при проверке эквивалентности полей объекта, сравнение идентичности ссылок является частью неглубокого сравнения.
Если мы представляем объект в виде некоторого дерева, построенного на ссылках, и работаем с объектом по ссылке, мы логически сопоставляем наш иерархический объект и эту ссылку. Ссылку можно рассматривать как 1-набор или структуру с одним полем, а значит сравнение по ссылке считать неглубоким сравнением объектов, причём это имеет смысл.
dxd 13.05.2016 20:43 # 0
guest 13.05.2016 19:06 # 0
Это что? Вагина? С волосатой родинкой слева?