170 похожих чатов

День добрый. Есть дерево. Надо уметь выбирать его лист или

узел. лист или узел можно выбрать по любому из 2х параметров: Тип или Имя. Сейчас я в процедуру выбора передаю корень и массив селекторов (Тип селектора и значение селектора). Получается очень многословно. Но если ввести строку по типу XPath и ее парсить, то парсинг этой строки будет довольно дорогой (относительно самого выбора дерева). Можно-ли как-то сказать что если у меня с вызывающей стороны константа (строка), то на этапе компиляции я хочу ее переделать в то что удобно мне? Или на этапе первого вызова. Что-то типа GIT компиляции.

50 ответов

9 просмотров

Покажите где многословно получается

А во что ты бы хотел эту строку переделать? Может, просто лямбочку передавать, а?

Warstone- Автор вопроса
Dr. Friedrich von Never
А во что ты бы хотел эту строку переделать? Может,...

У меня есть функция, которая выбирает лист. Вот в нее.

Warstone- Автор вопроса
Warstone
Причем тут это?..

Говоришь — хочу передать строку, которая идентифицирует функцию. Я говорю — ну и передай функцию. А ты такой — причём тут это.

Warstone- Автор вопроса

var result = Select(Tree, new Selector[] { new Selector(){Type = SelectorType.Name, Selector = "qwe"}, new Selector(){Type = SelectorType.Type, Selector = "rty"}, new Selector(){Type = SelectorType.Name, Selector = "asd"}, new Selector(){Type = SelectorType.Name, Selector = "fgh"}, new Selector(){Type = SelectorType.Type, Selector = "zxc"}, new Selector(){Type = SelectorType.Type, Selector = "vbn"}, });

Warstone
var result = Select(Tree, new Selector[] { new S...

А что возвращает? Список нод, удовлетворяющих условиям всем? Или хотя бы одному?

Warstone
Это не важно

Сделайте fluentapi А ля ByName(name).ByType(type) и т.д.

Warstone
var result = Select(Tree, new Selector[] { new S...

Ну вот те впадлу передать туда x => x.qwe, ну например? Или select("qwe")?

Warstone- Автор вопроса
Dr. Friedrich von Never
Ну вот те впадлу передать туда x => x.qwe, ну напр...

Не впадлу, а мне тогда придется заниматься анализом строки каждый раз. Это удар по производительности

Oleg Safonov
Я не понимаю пока вообще ничего что то

Если честно, я тоже. Но надеюсь, что в процессе обсуждения всё-таки станет понятнее.

Warstone
Не впадлу, а мне тогда придется заниматься анализо...

Она ж всегда одинаковая Кэш, да, как предложили выше

Warstone- Автор вопроса
Dr. Friedrich von Never
Закэшируй.

И как это сделать так, чтобы небыло обращение к какому-нибудь дикшенари?

Warstone
И как это сделать так, чтобы небыло обращение к ка...

Что за требования к производительности такие зверские?

Рассчитайте на старте приложения один раз результат и возвращайте его всегда Раз аргументы всегда одинаковые

Warstone
Дерево всегда разное

Тогда что планируется делать в компилтайме?

Warstone- Автор вопроса
Warstone
Дерево всегда разное

Строку распарсьте один раз на старте

Warstone- Автор вопроса
Oleg Safonov
Строку распарсьте один раз на старте

Тогда это потеряет читабельность или покажите примерный код.

Warstone
Тогда это потеряет читабельность или покажите прим...

Вы уж решите, или читабельность или 100к в секунду

Warstone- Автор вопроса
Oleg Safonov
Вы уж решите, или читабельность или 100к в секунду

Все вместе. Я знаю решение для других языков.

Warstone- Автор вопроса
Dr. Friedrich von Never
Код парсинга строки?

Код вызова так, чтобы он был быстрый.

Warstone
Все вместе. Я знаю решение для других языков.

Тогда на старте приложение распарсте строку, сложите в структуру какую нибудь. И потом не парьсте её и не принимайте на вход вообще

Warstone- Автор вопроса
Oleg Safonov
Тогда на старте приложение распарсте строку, сложи...

Тогда это будет менее наглядно. Так как сама строка будет не рядом с вызовом Select'а, а где-то еще.

Warstone
Код вызова так, чтобы он был быстрый.

Чтобы вызов был быстрый — его можно заинлайнить. Но проблема точно в этом?

Warstone
Тогда это будет менее наглядно. Так как сама строк...

Ну это нормально, раз там строка всегда одна Это как конфиг уже, какая разница что там конкретно

Warstone- Автор вопроса
Dr. Friedrich von Never
Пример чего?

Того о чем вы говорите. Просто C# не совсем родной язык.

Warstone- Автор вопроса
Oleg Safonov
Ну это нормально, раз там строка всегда одна Это ...

Ну вот в Перле я-бы написал что-то типа: my $result = search(state $search_path = Searcher.Build("qwe/rty")); В условных плюсах код был-бы таким-же

Warstone
Ну вот в Перле я-бы написал что-то типа: my $resul...

А на сишарпе кто мешает так же написать?

Warstone- Автор вопроса
Oleg Safonov
И как тут избегаете парсинга?

Все state переменные инициализируются один раз в жизни функции

Похожие вопросы

Обсуждают сегодня

вот что получается в интерпрететоре, работает и результаты выгляд разумными, но то как выглядит код мне не нравиться, а понять куда двигаться не очень могу, если кому не лень ...
Fedor
42
получается, что он находит одинаковое колво тегов, с разными именами, или я что тто не понял в таксоупе ?
Fedor
46
Всем привет, поясните за указатели, не могу понять, согласно Прата & это указатель * это тоже указатель в чём между ними разница?
01011010
17
вот такое это из хаскеловской или никсовой ситуации ? пока мне сложно отличить, может кто понимает last 10 log lines: > Running phase: updateAutotoolsGnuConfig...
Fedor
18
не понимаю как в какую сторону искать проблему вот так выглядит Tag в выводе Filtered tag: <a>, href: /url?esrc=s&q=&rct=j&sa=U&url=https://ru.wikipedia.org/wiki/Haskell&ved=2...
Fedor
8
Снова я с выводом номера вхождения подстроки в строку. Исправил код, номер элемента, с которого начинается подстрока в строке, выводит, но неправильно. Подскажите, пожалуйста,...
Ыиу
2
@dt0W3s1yQE75Mew ну чё как чувствуешь себя здесь бот? запомни тупое ты чучело - в ассемблере нету тянок
.
18
ого, прикольно, а что пишешь?
CodWiz | Серёжа by CodWiz
32
а вот так если по инструкции выше Y % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total ...
Fedor
7
Hi Does anyone know how to get this type of data from the server in Flutter? The data is not json event: message data: data: {"id":"chatcmpl-9G19nbaMyUdGsWJaJbd9wVtaGuQdw","o...
پشتیبانی فاروس
2
Карта сайта