👨🏼💻
ок, почитаю еще
Дима
Хотя не, ты конечно можешь имплементировать iterator protocol руками, но это довольно тупо)
👨🏼💻
Sergey
Дима
👨🏼💻
Дима
class IterableTree {
parent: IterableTree
leftChild: IterableTree
rightChild: IterableTree
data: Array<any>
* [Symbol.iterator]() {
yield* this.data
yield* this.leftChild // (!!!)
yield* this.rightChild
}
}
Дима
Такой объект поддерживает for of и spread оператор и разворачивает находящиеся в нём данные (свой список и списки дочерних нод) так, как будет удобнее
👨🏼💻
так генератор тоже поддерживает for..of
Дима
Кстати из этого следует один важный для твоей затеи факт
Дима
Что нормальный человеческий for of котый я тебе предлагаю с самого начала, и есть твой генератор, только в нормальной форме
Дима
👨🏼💻
а как структура получается --- двухсвязный список
👨🏼💻
это ж значит, что можно юзать более интересные алгоритмы. хотя я не уверен как это подружится с исходным массивом
Дима
Как опишешь — так и получается, там вообще всё на что хватит фантазии может быть)
Дима
Хоть heap, хоть double linked list, хоть что)
👨🏼💻
ну будет странно описывать граф, а изначально он массив ...
👨🏼💻
... и потом опять в массив
Дима
Это не массив
Дима
Это Iterable
👨🏼💻
array -> iterable -> array
👨🏼💻
изначально приходит массив, затем я с ним че-то делаю итератором, потом обратно в массив
👨🏼💻
Или я уже че-т не понимаю?
Дима
Я не решал твою задачу)
Дима
Я тебе показывал кейс в котором используются генераторы)
👨🏼💻
Дима
Блядь
Дима
Сейчас
👨🏼💻
👨🏼💻
Кстати, важный нюанс --- все происходит на клиентской машине
👨🏼💻
а она может быть слабая и галимая
Дима
Монопенисуально)
👨🏼💻
Дима
Просто сделай обработку данных пачками, чтобы за раз был лаг не более установленных рамок
Дима
И в воркер их
Дима
Можно сразу в пять)
👨🏼💻
Дима
👍
Winni
Если работает не правильно, то это не работает
Winni
это как если решать задачу по тест кейсам, и твой код будет работать только на первом, в котором на вход undefined
Bullwinkle
а, тут под "правильно" имелось ввиду "не говнокод" наверное
Дима
Ivan
Есть какие-нибудь прогнозы по поводу релиза telegram-mtproto? @ZeroBias
Ivan
А то @alpha в проекте как-то стремно
Может чем помочь? Не вижу роадмап
eahqzsr
как красиво проверить что все ключи и значения одного объекта имеются в другом?
eahqzsr
типа f({a: 1, b:2, c:3}, {a:1, c:3}) -> true
f({a:1, b:2, c:3}, {a: 3}) -> false
Дима
👨🏼💻
Ivan
ixplo
Dmitriy
MyObject.prototype.func = {};
MyObject.prototype.func.function1 = function() {return true;};
MyObject.prototype.func.function2 = function() {return true;};
Dmitriy
почему так сделать нельзя?
Vitaliy
👨🏼💻
Дима
Dmitriy
MyObject = function () {
};
MyObject.prototype.func.function1 = function() {return true;};
MyObject.prototype.func.function2 = function() {return true;};
=====
test_proro.js:55 TypeError: Cannot set property "function1" of undefined
test_proro.js:55 TypeError: Cannot set property "function1" of undefined
at jdk.nashorn.internal.runtime.ECMAErrors.error(ECMAErrors.java:57)
at jdk.nashorn.internal.runtime.ECMAErrors.typeError(ECMAErrors.java:213)
at jdk.nashorn.internal.runtime.ECMAErrors.typeError(ECMAErrors.java:185)
at jdk.nashorn.internal.runtime.ECMAErrors.typeError(ECMAErrors.java:172)
at jdk.nashorn.internal.runtime.Undefined.set(Undefined.java:162)
Nikolay
Так ну а prototype.func = {} объявить?
Dmitriy
хоть MyObject = { };
Dmitriy
а есть разница между
MyObject = {
};
и
MyObject = function () {
};
для прототипов?
Дима
Dmitriy
Дима
В nashorn кстати что не завезли es6 или препроцессоры? Зачем страдать то так)
Nikolay
nashorn omg
Nikolay
ток щас заметил
Dmitriy
MyObject = {
};
MyObject.prototype.func = {};
MyObject.prototype.func.function1 = function() {return true;};
MyObject.prototype.func.function2 = function() {return true;};
кидает ошибку
Nikolay
Какую?
Dmitriy
MyObject = function () {
};
MyObject.prototype.func = {};
MyObject.prototype.func.function1 = function() {return true;};
MyObject.prototype.func.function2 = function() {return true;};
так ок
Dmitriy
Какую?
test_proro.js:54 TypeError: Cannot set property "func" of undefined
test_proro.js:54 TypeError: Cannot set property "func" of undefined
at jdk.nashorn.internal.runtime.ECMAErrors.error(ECMAErrors.java:57)
at jdk.nashorn.internal.runtime.ECMAErrors.typeError(ECMAErrors.java:213)
at jdk.nashorn.internal.runtime.ECMAErrors.typeError(ECMAErrors.java:185)
at jdk.nashorn.internal.runtime.ECMAErrors.typeError(ECMAErrors.java:172)
at jdk.nashorn.internal.runtime.Undefined.set(Undefined.java:162)
Java 8 (Nashorn)
Дима
nashorn omg
Да я тоже офигел уже))
Как динозавра встретить
Dmitriy
как помню он на V8 должен быть похож
Дима
Чудовищно конечно же
Dmitriy
что именно?
Дима
ну тебе стоит понимать, что твоя работа мягко говоря крайне нестандартна)
Dmitriy
это реализация ECMAScript 5.1+ в JDK
Dmitriy
и нормально работает, перевожу на протопиную модель наследования разросшийся код, чтобы по памяти было оптимальней
Дима
> нормально работает
> перевожу на протопиную модель
Понимаешь, тут есть одна проблема 😅
Dmitriy
Дима
Относительно всех вообще