- 1
Конструктор по умолчанию?
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+1
Конструктор по умолчанию?
Не, не слышали.
Рефлексией итерируемся по свойствам и вызываем функцию инициализации полей ))))))))))))))
а что за яп?
в говне нет конструкторов, там можно присвоить значения полям по умолчанию, либо сделать функцию, которая заполняет нужную тебе херню
Я хочу проинициализировать все Detali по умолчанию = []int{1,2,3}, как мне это сделать?
и кстати я напиздел, значения по умолчанию присвоить нельзя
ты бугуртишь от отсутствия коснтрукторов по умолчанию в Го, и рефлексия это единственное решение
А вообще, для подобного рода хуйни нужен говномеханизм для инспекции структур, т.е. чтобы тип структуры можно было обходить как дерево, который бы можно было в компилтайме использовать и через него делать синтез неких функций. Чтоб такую хуйню не только для каких-то "конструкторов" использовать, а вообще хуй пойми для чего. Короче, надо чтоб гомоиконность.
гомоиконность нужна
close enough.
А в крестах можно написать нечто для автоматического печатанья хуйни, если для вложенной хуйни определены методы печатанья хуйни?
Ну допустим есть класс для точки в декартовых координатах:
Я например хочу чтобы если я напишу класс с кучей точек
И чтобы если у переменных внутри класса нет метода print_shit(), то тогда пусть компиляция ломается
Почему ты не пишешь на lisp?
Если пистон компилируется 0 секунд и падает в рантайме а кресты компилсяются 30 секунд и падают во время компиляции, то кажется что питон с точки зрения продуктивности оптимальнее
Кроме того, проверка в рантайме тоже занимает время
Во втором случае неочевидно, будет ли программа написана в принципе
Если это софт для авионики, то я предпочел бы второй вариант:)
На коке или идрисе никто особо не пишет
Но у j123, насколько я понимаю, горит от половинчатости решения: в С++ завезли какую-то метушню, которой можно решить несколько задач. Потом начали добавлять костыли, по костылю на каждый кейс (std::is_хуе_мое).
j123 предлагает решить проблему на корню, а не ставить костыли.
Но конечно это всё не бесплатно: статическеий анализ такого кода всегда будет тюринг полным и IDE будут сосать
Статический анализ крестоговна и так тьюринг-полный т.к. шаблонопарашное метапрограммирование уже есть, и оно тьюринг-полное. И constexpr-ы кстати тоже тьюринг-полные
Тут более-ли-менее четкая граница между метаговном, и говном. А в случае полной гомоиконности её же не будет
Грубо гря так (птичий язык)
Пробежаться по всем полям, и проверить их по случайному условию вроде бы никак нельзя?
Еще десять лет назад по говнокоду бегал петух, и говорил, что дескать в С++ два разных языка (для комплайт тайма и для рантайма) и что он вынужден два раза писать одно и тоже, как сраных ПХПшник, который пишет бизнес-логику один раз на ПХП, второй раз на джаваскрипте, и потом еще в mysql тоже самое пишет, и что не плохо бы в С++ как-то унякфицировать всё
Слово "Гомоиконность" еще тогда не было тут зафорщено
Покажи-ка мне, как C++ решает задачу из https://govnokod.ru/27403#comment626280
Я уж молчу о том, что компилятор может твои локлаьные переменные и вовсе уконтропупить
А какой язык (кроме гомоиконных типа лиспа) это решает?
В языке D это можно было б легко решить, если там через рефлекшен можно каким-то образом получить список локальных переменных
https://dlang.org/phobos/std_traits.html - но подобной хуйни я что-то не вижу. Там есть какие-то блядь isAbstractClass, isAbstractFunction, isCallable, isDelegate и прочие "isPituz", но способа получить локальные переменные, доступные в таком-то там месте какой-то функции там похоже что нет.
Т.е. в D это простым способом не решается, но кое-как черезжопно это все ж можно решить, через миксины и написание парсера
Но сам ты такого говна написать не можешь, не влазя в кишки компилятора. А если б была гомоиконность, ты б что угодно мог нахуевертить. Поэтому я за гомоиконность
https://jmusacchio.github.io/blog/2016/groovy-ast-transformations/
https://twitter.com/microrjomba/status/1559878324582862851