powered by simpleCommunicator - 2.0.48     © 2025 Programmizd 02
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Сложные структуры в качестве ключа в set
25 сообщений из 82, страница 3 из 4
Сложные структуры в качестве ключа в set
    #40088035
private
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А через много лет разработчики жаваскрипта придумывают глубокие идеи и принцыпы языка, "The JavaScript Way", чтобы обьяснить его странности и особенности :). Хотя основная концепция JS это "... я его слепила из того что было ..."
...
Рейтинг: 0 / 0
Сложные структуры в качестве ключа в set
    #40088050
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
voraa
Мечты... мечты...

Беллард в quickjs сделал. Может лет через 5 и коммитет раздуплится. Можешь устроить там драму в обсуждениях, подтолкнуть его.
...
Рейтинг: 0 / 0
Сложные структуры в качестве ключа в set
    #40088051
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
private
ЖС в этом плане действительно отсталый язык. Где нет ни оверлоада функций нормального с типами, ни мульти диспатч, ни екстеншен методов, ни сложных структур данных, ни понимания хеш/еквалити и т.п.

Это динамический слаботипизированный язык, такой же, как, например, луа. Откуда там может взяться оверлоад функций, типы и пр., болезный?
...
Рейтинг: 0 / 0
Сложные структуры в качестве ключа в set
    #40088052
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
private
рядом фундаментальных дефектов

То, что рыба плавает, а не летает, видимо тоже фундаментальный дефект рыбы, лул.
...
Рейтинг: 0 / 0
Сложные структуры в качестве ключа в set
    #40088055
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чето не понимаю, как можно сравнивать stringify для двух объектов, типа
{a:1,b:2} и {b:2,a:1}.
...
Рейтинг: 0 / 0
Сложные структуры в качестве ключа в set
    #40088064
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
voraa
У объектов могут быть методы. Как сравнивать одинаковы ли функции?

У меня не было надобности в таком сравнении. Т.ч. не у того спрашиваешь...
...
Рейтинг: 0 / 0
Сложные структуры в качестве ключа в set
    #40088084
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторУ меня не было надобности в таком сравнении. Т.ч. не у того спрашиваешь.
у меня тоже.
...
Рейтинг: 0 / 0
Сложные структуры в качестве ключа в set
    #40088293
Фотография Имя пользователя1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa
Имя пользователя1
"ромбы" или (особенно) циклы

Покажи примеры этих элементов.

Код: javascript
1.
2.
3.
4.
5.
6.
7.
// ромб
const x = {};
x.y = x.z = {a:1};

// цикл
const x = {};
x.y = x;



ну и всякие комбинации того-сего.
...
Рейтинг: 0 / 0
Сложные структуры в качестве ключа в set
    #40088301
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чего только не насмотришься...
...
Рейтинг: 0 / 0
Сложные структуры в качестве ключа в set
    #40088304
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa
Чего только не насмотришься...

Да я соавниваю, что надо сравнивать. Например, в цикле, или ещё как. И не парюсь. Это не часто нужно.
...
Рейтинг: 0 / 0
Сложные структуры в качестве ключа в set
    #40088391
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSerge , сейчас с этими юнит тестами валом всяких библиотек для сравнения тех же объектов...
Подключай и используй.
...
Рейтинг: 0 / 0
Сложные структуры в качестве ключа в set
    #40088393
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот одна из таких
http://underscorejs.org/#isEqual
Или вот...
https://jestjs.io/ru/docs/using-matchers
...
Рейтинг: 0 / 0
Сложные структуры в качестве ключа в set
    #40088396
voraa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsa
voraa
У объектов могут быть методы. Как сравнивать одинаковы ли функции?

У меня не было надобности в таком сравнении. Т.ч. не у того спрашиваешь...

Когда применительно к JS говорят об объектах, то естественно приходит на ум произвольный объект, допустимый в JS.
...
Рейтинг: 0 / 0
Сложные структуры в качестве ключа в set
    #40088410
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
voraa , все функции/методы, что по ссылкам я привел выше, сравнивают именно произвольные объекты...
...
Рейтинг: 0 / 0
Сложные структуры в качестве ключа в set
    #40088432
voraa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsa
voraa , все функции/методы, что по ссылкам я привел выше, сравнивают именно произвольные объекты...

undescore не работает с произвольными объектами.
Все не проверял, но

Код: javascript
1.
2.
let s = Symbol()
console.log(_.isEqual({a:1, b:2}, {a:1, b:2, [s]:3}))   // -> true
...
Рейтинг: 0 / 0
Сложные структуры в качестве ключа в set
    #40088436
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
voraa
undescore не работает с произвольными объектами.

Напиши им в жлоб лист - пусть доделывают.
...
Рейтинг: 0 / 0
Сложные структуры в качестве ключа в set
    #40088442
Фотография Имя пользователя1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa
voraa
undescore не работает с произвольными объектами.

Напиши им в жлоб лист - пусть доделывают.
хрен они доделают - поля-симболы не итерируются (это типа такой сейф для данных: если на руках нет симбола, то никак не доберешься до поля).
...
Рейтинг: 0 / 0
Сложные структуры в качестве ключа в set
    #40088443
voraa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имя пользователя1
хрен они доделают - поля-симболы не итерируются (это типа такой сейф для данных: если на руках нет симбола, то никак не доберешься до поля).

В смысле? Ну не итерируются через for-in.
Но есть же Object.getOwnPropertySymbols
Можно через него.
...
Рейтинг: 0 / 0
Сложные структуры в качестве ключа в set
    #40088445
private
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВСе правильно андерскор делает, весь смысл символов чтобы они были невидимыми, и соотв. не обнаруживались стандартными операциями.

А вытащить символ таки можно

```
let s = Symbol()
Object.getOwnPropertySymbols({a:1, b:2, [s]:3})
```
...
Рейтинг: 0 / 0
Сложные структуры в качестве ключа в set
    #40088448
alectr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Or
Код: javascript
1.
Reflect.ownKeys({[Symbol.for('testSymbol')]: 'symbol value', prop2: 2, prop3: {}}); // ["prop2", "prop3", Symbol(testSymbol)]
...
Рейтинг: 0 / 0
Сложные структуры в качестве ключа в set
    #40088449
voraa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
private
ВСе правильно андерскор делает, весь смысл символов чтобы они были невидимыми, и соотв. не обнаруживались стандартными операциями.

А вытащить символ таки можно

```
let s = Symbol()
Object.getOwnPropertySymbols({a:1, b:2, [s]:3})
```

Речь идет о равенстве объектов.
Логично предположить, что если объекты равны, то любые действия с этими объектами дадут одинаковый результат

Код: javascript
1.
2.
3.
4.
5.
6.
7.
let s = Symbol()
let o1 = {a:1, b:2}; 
let o2 = {a:1, b:2, [s]:3}
console.log(_.isEqual(o1, o2))   // -> true с точки зрения андерскора объекты равны

console.log (Object.getOwnPropertySymbols(o1).length)  // -> 0
console.log (Object.getOwnPropertySymbols(o2).length)  // -> 1  а результаты разные



И что считать "стандартными" операциями?
По мне любая функция входящая в реализацию движка вполне стандартна.
...
Рейтинг: 0 / 0
Сложные структуры в качестве ключа в set
    #40088459
voraa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ведущий профессионал
]В других языках я могу переопределить оператор сравнения. И объекты будут сравниваться так, как я хочу, а не так, как хочет язык.


Серьезно?
В С++ можно переопределить оператор сравнения, что бы сравнивать произвольные объекты? Ну хотя бы почти произвольные?
Хоть черновик набросайте, как это сделать

Или речь идет про какие то другие языки? Какие?
...
Рейтинг: 0 / 0
Сложные структуры в качестве ключа в set
    #40088552
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
voraa
В С++ можно переопределить оператор сравнения, что бы сравнивать произвольные объекты? Ну хотя бы почти произвольные?

Да легко. Преобразуй в *void и сравнивай побайтно.
...
Рейтинг: 0 / 0
Сложные структуры в качестве ключа в set
    #40088592
voraa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
crutchmaster
voraa
В С++ можно переопределить оператор сравнения, что бы сравнивать произвольные объекты? Ну хотя бы почти произвольные?

Да легко. Преобразуй в *void и сравнивай побайтно.

Ну ты хитрый, умелый программер. Большой знаток.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
struct A {
  short x;
  short y[2];
};

struct B {
  short x[2];
  short y;
}

A a = {1,2,3};
B b = {1,2,3};



a == b?
...
Рейтинг: 0 / 0
Сложные структуры в качестве ключа в set
    #40088608
voraa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проблема то вроде пустяковая
Есть какие то структуры

struct A {...};
struct B {...};
struct C {....};
.....
Есть "объекты"

A a1, a2;
B b1, b2;
C c1, c2;

И должно быть проще пареной репы в таком могучем языке, с великой перегрузкой операторов, со всякими хешами...
Написать метод сравнения a1 c b1? c1 c c2, c2 c a2... Короче любой объект с любым


Или в недоязыке C++ такое невозможно?
...
Рейтинг: 0 / 0
25 сообщений из 82, страница 3 из 4
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Сложные структуры в качестве ключа в set
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]