Size: a a a

Rust — русскоговорящее сообщество

2021 June 17

f

faramo_zayw in Rust — русскоговорящее сообщество
JSON.stringify?
источник

МТ

Марк Танащук... in Rust — русскоговорящее сообщество
Ага
источник

ΑZ

Αλεχ Zhukovsky in Rust — русскоговорящее сообщество
а называется HRTB
источник

C

ChzChz in Rust — русскоговорящее сообщество
ага нашел, примерно понял, но нужно погуглить чужие мысли. спасибо
источник

f

faramo_zayw in Rust — русскоговорящее сообщество
Ну такая себе замена) Из JS аналог скорее Object.toString(), но это имхо тоже такое себе в сравнении с удобствами из Раста
источник

C

ChzChz in Rust — русскоговорящее сообщество
хаха забавно кстати ))))
источник

NE

Nyc Enas in Rust — русскоговорящее сообщество
странно что запрещает
источник

МТ

Марк Танащук... in Rust — русскоговорящее сообщество
.toString можно только на прототипах функций и классов менять, но не на прототипе переменной-объекта или переменной-массива(и писать функцию для каждого форматируемого объекта — далеко не всегда ок)

Или можно, но с большим гемором и низкой производительностью

JSON.stringify работает на любых объектах/массивах/прочем нормально из коробки, позволяя отступы устанавливать

При необходимости также позволяет используя toJSON отформатировать до необходимого внешнего вида
источник

МТ

Марк Танащук... in Rust — русскоговорящее сообщество
Но да, так как макро нету в js то единственное что остается — импортировать библиотеки для форматирования
источник

ΑZ

Αλεχ Zhukovsky in Rust — русскоговорящее сообщество
всегда пожалуйста
источник

NE

Nyc Enas in Rust — русскоговорящее сообщество
не понял первого предложения
источник

NE

Nyc Enas in Rust — русскоговорящее сообщество
в любом js объекте можно написать поле с функцией toString(), не обязательно прототипы
источник

f

faramo_zayw in Rust — русскоговорящее сообщество
Полагаю то, что сделать общую реализацию можно только для классов/функций
источник

f

faramo_zayw in Rust — русскоговорящее сообщество
.toString семантически ближе к Debug/Display, чем JSON.stringify. Я об этом больше :)
источник

NE

Nyc Enas in Rust — русскоговорящее сообщество
а, вы про различение dbg и display принтов
источник

МТ

Марк Танащук... in Rust — русскоговорящее сообщество
В js можно изменить прототип только не-arrow функций которые создают свой this по инициализации(и собственно классы потому что это рассахаренные функции под капотом)

Тобишь
 
function myFun() {};
const myArrowFun = () => {};
const myObj = {};

// ок
myFunj.prototype.toString = function() { return this.someFoo }
// ошибка
myArrowFunj.prototype.toString = function() { return this.someFoo }
// ошибка
myObj.prototype.toString = function() { return this.someFoo }

И да, можно задать свойство с функцией любому объекту и при вызове myObj.toString() будет отображаться необходимое форматирование
myObj["toString"] = function() { return "myStr" }

Однако это самое обычное свойство которое в любой части кода может быть изменено. Как var с глобальным скоупом.  Это плохо и ведет к багам
источник

МТ

Марк Танащук... in Rust — русскоговорящее сообщество
Сорри за полотно
источник

МТ

Марк Танащук... in Rust — русскоговорящее сообщество
Ровно также можно создать свойство-функцию format, которая будет 100% ожидаемо работать и другой разработчик вызвавший toString получит то, что должна отобразить toString, а чтобы понять как работает форматирование он будет искать где присвоено свойство format в коде
источник

ΑZ

Αλεχ Zhukovsky in Rust — русскоговорящее сообщество
ребят оффтопик если что в другом чате, см. описание чата
источник

V

Vetro in Rust — русскоговорящее сообщество
Можно, если Option возвращается

А если не возвращается то что делать, паниковать?
источник