@dlangru

Страница 40 из 719
Макс
24.07.2016
15:41:23
например, пишешь ты шаблонизатор. чтобы значения переменных в HTML подставлял. хочешь, чтобы в исходниках у тебя лежал такой файл: <h1>{{ title }}</h1> А при импорте в код получалось, как будто там написано такое: return "<h1>" ~ data.title ~ "</h1>"; Сначала делаешь import("template.html"), как по предыдущей ссылке, да. А затем с помощью кодогенерации на миксинах делаешь какой захочешь код, заменяя одно на другое. Получается, что ты можешь под свои нужды изобрести мини-язычок и часть файлов писать на нём, а не на D, а потом своими миксинами в D его конвертировать уже во время компиляции. Красота же.

пример условен, конечно, вряд ли шаблонизатор будет именно такой код генерировать. тебе там как-то по-другому захочется

Dmitry
24.07.2016
15:45:41
а... понял

пасибо

Google
Макс
24.07.2016
15:45:52
https://github.com/PhilippeSigaud/Pegged/ Вон есть библиотека-генератор парсеров грамматик, у неё свой язык, и она, читая описания языков на нём в компайл-тайме, сочиняет необходимые структуры и функции для парсинга. Язык внутри языка!

Dmitry
24.07.2016
15:48:39
так, а inid значит где полезен?

Макс
24.07.2016
15:50:01
ты у себя в приложении хранишь какой-то центральный конфиг? например class Config { string user; string password; uint fontSize; }

если да и если ты хочешь из INI с такой же структурой автоматически заполнять этот класс значениями, а не писать вручную загрузку каждого поля, то вот он и пригодится

но я, повторюсь, его не юзал, только пример прочитал)

Dmitry
24.07.2016
15:51:54
а... короче почти тоже самое что ты написал так?

Макс
24.07.2016
15:53:37
да, я изобрёл такой же костыль вроде

Dmitry
24.07.2016
15:58:15
Так, а чтобы мне из самого простого написать для практики чтобы фишку compile time пhосечь? А то я явно кучу фишек не догоняю

Макс
24.07.2016
15:58:47
напиши свой собственный костыль наподобие моего Config ? и несложно, и выкинуть не жалко ?

ну или не знаю

ты шаблоны какие-то писал? можно доработать, может быть

Dmitry
24.07.2016
16:01:32
нет не писал :( вообще

Макс
24.07.2016
16:01:53
ну вот геттеры-сеттеры напиши

Google
Dmitry
24.07.2016
16:02:15
геттеры-сеттеры это же Шарповсая штука в Ди вроде бы их нет?

Макс
24.07.2016
16:03:31
чтобы ты писал: mixin property!(int, "id"); А оно само генерировало: private int _id; int get_id() { return _id; } void set_id(int id) { _id = id; }

ну геттер и сеттер — слова общие. да, я слышал что в C# для них какие-то удобства сделаны. вот и ты себе удобство маленькое соорудишь.

и миксины заюзаешь на деле

причём и те и другие))

Dmitry
24.07.2016
16:04:59
а...

геттеры и сеттеры это просто поля класса?

Макс
24.07.2016
16:05:59
методы

для доступа к полям

Dmitry
24.07.2016
16:07:19
а зачем специальные методы для доступа нужны? Я до этого когда писал просто к полям обращался

без методов

Макс
24.07.2016
16:07:40
тут незачем. да, я опять надуманный пример выдал(

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

хм, тогда не знаю

Dmitry
24.07.2016
16:09:46
А ты на шарпе пишешь? Зачем их там юзаешь?

Макс
24.07.2016
16:09:53
неа

Dmitry
24.07.2016
16:31:11
Так, а все же к теме экзешник патчить. Я понимаю что это тупорный вариант, но на сколько он сложный? Просто хочется попробовать

и так же минусы интересны которые это может вызывать

Макс
24.07.2016
16:31:53
я вообще не понял, что ты хочешь

Dmitry
24.07.2016
16:33:52
Чnобы не выносить данные в конфиг. А чтобы сделать exe который патчит сам себя.

Google
Dmitry
24.07.2016
16:35:48
Просто теоретически интересно.

Макс
24.07.2016
16:35:57
подозреваю, что это вопрос не про D, а про работу с Windows-специфичными ресурсами. и никакая кодогенерация уже не поможет, ты ведь хочешь магически перезагружать данные _после_ компиляции

Dmitry
24.07.2016
16:36:00
Чтобы был один exe куда всю вшито

Мерлин
24.07.2016
16:36:06
Ну можно например в конец приклеивать Есть такая штука как встраваемые ресурсы

Но там обычно read only

Dmitry
24.07.2016
16:36:41
Патчинг активного процесса возможен?

Мерлин
24.07.2016
16:37:26
Патчинг активного процесса возможен?
ээээ Зачем процесс? Тебе же файл нужно изменить

Макс
24.07.2016
16:37:34
что есть патчинг? что ты хочешь чтобы произошло?

Dmitry
24.07.2016
16:37:52
я имею ввиду когда софтина запущена, она сможет сама свой exe пропатчить? Или это невозможно?

Я хочу значение поля бинарика поменять

Макс
24.07.2016
16:39:39
наверное, да, но к этому моменту языка D у тебя уже нет, а есть бинарный код. я про него не знаю. и, честно говоря, не понимаю зачем знать

Dmitry
24.07.2016
16:40:19
ок пасибо)

Денис
24.07.2016
17:20:10
Вопрос товарищи

Шаблонизирую функцию

Как мне проверить является ли шаблон класса T - массивом

и если является, то получить тип того, из чего этот массив

Макс
24.07.2016
17:21:37
либо в std.traits найти подходящую штуку типа isArray!T, наверняка будет

qwe
24.07.2016
17:21:47
? хороший вопрос

Google
Макс
24.07.2016
17:23:39
либо в условной сигнатуре использовать трейт compiles, например: void foo(T)(T t) if (__traits(compiles, (new T)[0])) {}

наверное, я перемудрил))

Денис
24.07.2016
17:31:44
Во: https://dlang.org/phobos/std_traits.html#isArray
Спасибо. Им и сделал.

Макс
24.07.2016
17:31:49
ну а исходный тип, наверное, получить через какой-нибудь typeof(T.init[0])

Денис
24.07.2016
17:32:01
там есть

Макс
24.07.2016
17:32:01
(написал наугад, сильно не вдумывался)

Денис
24.07.2016
17:32:07
ForeachType

Тоже в трейтсах

Admin
ERROR: S client not available

Макс
24.07.2016
17:32:17
о, точно, круто

Ну, в принципе, я почти угадал принцип работы) Только они там по-честному запускают foreach, а не берут [0]. https://github.com/dlang/phobos/blob/master/std/traits.d#L6200

Игорь
25.07.2016
08:28:22
Уже давно сижу на этой конфе, но вот решил признаться. Сижу только для того что бы понять "а нафига мне D" :) Нравится мне питон за скорость разработки, C за скорость исполнения кода. Но что мне даст D я понять не могу. Есть в нем что-нибудь особенное, ради чего стоит изучить?

Макс
25.07.2016
08:32:01
Метапрограммирование же. Всё, чего так не хватало в C++. Но, возможно, я из другого типа людей, мне даже питон при всех его объективных плюсах не очень нравится из-за того, что нет компиляции и соответствующих проверок. И вот когда мы исключаем питон и т.п. по этому признаку, то самым гибким из оставшихся (и известных мне) становится D. А на скорость выполнения мне в моих пет-проектах до некоторой степени плевать просто, не сравнивал по этому параметру.

Игорь
25.07.2016
08:34:13
Да... с питоном таже беда, то что могло быть выявлено еще на этапе компиляции потом долго и нудно ловишь в виде бага. Как бы не в обиду питону, это со всем скриптовыми языками беда.

Макс
25.07.2016
08:34:25
Я бы не отказался от языка с синтаксисом Python, в который по мере возможности впихнуты возможности D! ассёрт без лишних скобок это хорошо)

Игорь
25.07.2016
08:35:35
NIM пробовал, по синтаксису похоже. Но как-то совсем уж сыроват.

Max
25.07.2016
09:33:39
В ниме всё же многовато лишнего, и он куда сложнее чем кажется. Мне из косящих под скрипты больше всего понравился crystal. Ди нравится как плюсы без легаси

Мерлин
25.07.2016
09:36:44
Go жи

Oleg
25.07.2016
09:36:55
Go жи
Нет

Google
Max
25.07.2016
09:37:03
Он слишком убогий :(

Мерлин
25.07.2016
09:37:05
Нет
Дыа

Oleg
25.07.2016
09:37:21
Дыа
Неат

Мерлин
25.07.2016
09:37:33
Неат
Дооо Go прекрасен

Oleg
25.07.2016
09:37:51
Дооо Go прекрасен
Он кастрированный)

Мерлин
25.07.2016
09:38:47
Он кастрированный)
Он гибок как рельса, и мощный, как ТРД под мельдонием

На нем ты пишешь байтолапшу, и это прекрасно

Max
25.07.2016
09:40:03
Там уже можно написать коллекцию без кастов всего к интерфейсу написать хотя бы контейнер?

Max
25.07.2016
09:40:56
О, сишечка, привет

Oleg
25.07.2016
09:41:15
С помощью кодогенерации
Кодогенерация в IDE?

Игорь
25.07.2016
09:41:26
На go я не пойду даже не потому, что он мне сам по себе не нравится, но и потому, что поддержка от "корпорации добра", уже наелся полной ложкой от них, достаточно.

Мерлин
25.07.2016
09:41:26
О, сишечка, привет
Это как си Но только современная и на батарейках

Max
25.07.2016
09:42:20
Это как си Но только современная и на батарейках
Это как текстовые макросы,только на комментариях

Мерлин
25.07.2016
09:43:15
Это как текстовые макросы,только на комментариях
Ну и ок У го ужасное метапрограммирование Но любим мы его не за это

Макс
25.07.2016
09:44:05
Щито? Комментарии влияют на код?? По-моему, даже PHPшники, когда обсуждали ввод такой фичи, сомневались, не знаю, правда, чем кончилось

Мерлин
25.07.2016
09:44:54
Макс
25.07.2016
09:45:43
типа type hints в питоне? # type: int

Мерлин
25.07.2016
09:48:43
типа type hints в питоне? # type: int
Неа Там строгая типизация Просто нет дженериков, частично их заменяет механизм интерфейсов, а частично - кодогенерация, которую используют скажем для того, чтобы сгенерировать строго типизированную коллекцию

Oleg
25.07.2016
10:12:07
Ну тогда наверное норм

Страница 40 из 719