Size: a a a

2021 March 29

DB

Dmitry Bubnenkov in dlang.ru
ну допустим узнать есть ли у родителя потомки определенного типа. Или значение всех потомков сложить\перемножить без написания каждый раз кода обхода
источник

DH

Dark Hole in dlang.ru
Dmitry Bubnenkov
Да, но с рядом фишек дополнительных
Мне аж интересно, чего тебе в DOM не хватает
источник

DB

Dmitry Bubnenkov in dlang.ru
Dark Hole
Мне аж интересно, чего тебе в DOM не хватает
Не хватает высокоуровневых операций. Вот прям сейчас проблема. Мне нужно вставлять id во все потомки у которых внутри есть что-то кроме блока в значении
источник

МВ

Макс Воробьев... in dlang.ru
Dmitry Bubnenkov
ну допустим узнать есть ли у родителя потомки определенного типа. Или значение всех потомков сложить\перемножить без написания каждый раз кода обхода
1-е. нет - к сожалению typeof всегда будет Object. поэтому нужно делать кастомное проперти аля property string typename: "" и потом его проверять у объекта
источник

МВ

Макс Воробьев... in dlang.ru
2-е. можно взять что-нибудь из js
источник

S

Snusmumriken in dlang.ru
Dmitry Bubnenkov
ну допустим узнать есть ли у родителя потомки определенного типа. Или значение всех потомков сложить\перемножить без написания каждый раз кода обхода
Время писать фреймворк.
источник

МВ

Макс Воробьев... in dlang.ru
qml поддерживает js синтаксис и часть его api
источник

DB

Dmitry Bubnenkov in dlang.ru
Вот структура данных:
data: [
 id: 123
 bar: [
   name: "apple"
   baz: []
 ]
 bar: [
   baz: []
 ]  
 bar: [
   name: "banana"
   baz: []
 ]  

]

Через рекурсию я могу обойти все и вставить id родителя в каждый потомок:
data: [
 id: 123
 bar: [
   id: 123
   name: "apple"
   baz: [id: 123]
 ]
 bar: [
   id: 123
   baz: [id: 123]
 ]  
 bar: [
   id: 123
   name: "banana"
   baz: [id: 123]
 ]  

]

Но сейчас возникла потребность вставлять id только в том случае если у потомка есть внутри что-то кроме блока [] в значении т.е. должно получиться:

data: [
 id: 123
 bar: [
   id: 123
   name: "apple"
   baz: []
 ]
 bar: [
   baz: []
 ]  
 bar: [
   id: 123
   name: "banana"
   baz: []
 ]  

]
источник

DB

Dmitry Bubnenkov in dlang.ru
Мне вот подобных фишек не хватает очень
источник

S

Snusmumriken in dlang.ru
Dmitry Bubnenkov
Вот структура данных:
data: [
 id: 123
 bar: [
   name: "apple"
   baz: []
 ]
 bar: [
   baz: []
 ]  
 bar: [
   name: "banana"
   baz: []
 ]  

]

Через рекурсию я могу обойти все и вставить id родителя в каждый потомок:
data: [
 id: 123
 bar: [
   id: 123
   name: "apple"
   baz: [id: 123]
 ]
 bar: [
   id: 123
   baz: [id: 123]
 ]  
 bar: [
   id: 123
   name: "banana"
   baz: [id: 123]
 ]  

]

Но сейчас возникла потребность вставлять id только в том случае если у потомка есть внутри что-то кроме блока [] в значении т.е. должно получиться:

data: [
 id: 123
 bar: [
   id: 123
   name: "apple"
   baz: []
 ]
 bar: [
   baz: []
 ]  
 bar: [
   id: 123
   name: "banana"
   baz: []
 ]  

]
Это какая-то очень специфичная задача.
источник

S

Snusmumriken in dlang.ru
Если она нужна малому количеству людей — скорее всего её не будут реализовывать в либах и фреймворках, да и в самом JS. Написать рекурсивный map и функцию рекурсивной проверки детей не особо сложно. Собственно, тут можно обойтись одним и тем же map'ом — один для редактирования второй для проверки.
источник

DB

Dmitry Bubnenkov in dlang.ru
Да написать то можно. Но я хочу сделать высокоуровневый конструктор, чтобы не в императивном стиле все каждый раз обрабатывать
источник

DB

Dmitry Bubnenkov in dlang.ru
ибо слишком много кода получается
источник

МВ

Макс Воробьев... in dlang.ru
Bar.qml:
QtObject {
   property int int_id: baz.length > 0 ? 124 : 0
   default property list<Baz> baz: []
}
источник

DH

Dark Hole in dlang.ru
Dmitry Bubnenkov
Не хватает высокоуровневых операций. Вот прям сейчас проблема. Мне нужно вставлять id во все потомки у которых внутри есть что-то кроме блока в значении
Ну
1. Это оч специфичная задача
2. jQuery (как ни странно) имеет прибамбасы для такого. Но скорость мб и покушает.
источник

МВ

Макс Воробьев... in dlang.ru
источник

DB

Dmitry Bubnenkov in dlang.ru
Dark Hole
Ну
1. Это оч специфичная задача
2. jQuery (как ни странно) имеет прибамбасы для такого. Но скорость мб и покушает.
ну вот да. Мне б пока на серверной части что-то изобразить. Просто проблема в том что отдельные фишки реализуемы. Но когда сразу куча таких фишек возникает это уже проблемой становится
источник

DB

Dmitry Bubnenkov in dlang.ru
Просто я реально думал свой DSL из 10 операторов запилить чисто под частную задачу
источник

DH

Dark Hole in dlang.ru
Dmitry Bubnenkov
ну вот да. Мне б пока на серверной части что-то изобразить. Просто проблема в том что отдельные фишки реализуемы. Но когда сразу куча таких фишек возникает это уже проблемой становится
А если возникает куча фишек в духе "хочу поменять структуру по каким-то хитровыебанным правилам" это уже тревожный звонок.
источник

S

Snusmumriken in dlang.ru
Dmitry Bubnenkov
ну вот да. Мне б пока на серверной части что-то изобразить. Просто проблема в том что отдельные фишки реализуемы. Но когда сразу куча таких фишек возникает это уже проблемой становится
Для подобных вещей есть весьма универсальный но не очень приятный и дебажный инструмент, под названием "лямбды" и фильтер-мап-редьюс-зип. Если много вкладывать одно в другое, можно сделать кратко и довольно просто, но отлаживать и ловить ошибки может быть хреново.

Типа берёшь рекурсивную фигню, трансформируешь свою структуру в список, фильтруешь ненужное (то где пустой список), к остальному применяешь что тебе надо (id родителя).
источник