Closed ivlevAstef closed 6 years ago
enum можно заменить на
enum CarBrand { struct bmw {} struct audi {} }
В принципе, так code completion тоже работает. Но есть минус что тэги - классы нельзя объявить как var tag: DITag = CarBrand.bmw.self, это просто не работает, а с enum-ом так можно. С другой стороны, если мы потеряем валидацию, то будет очень грустно. Я за то, чтобы её оставить (по крайней мере пока нет compile-time альтернативы)
В 3 версии появилась валидация. Насколько она помогает, и может стоит ее ослабить?
В чем проблема: есть 2 модификатора - tag, many и еще один костыль в виде имени. Теги не удобны так как не дают пользоваться enum. C many все хорошо. Имена закостылены, и ими пользоваться сложно.
Но если закрыть глаза при валидации на совпадение Тегов и Имен, оставив проверку только по типу, то можно будет сделать общий удобный механизм. При этом в теории при интеграции с компилятором, вся валидация перейдет на стадию компиляции и будет полной.
Синтаксис (становится для всех 3 случаев одинаковый):
tag, name, many, arg
Пожалуйста, те кто увидит, ответьте на вопрос - мне очень важно ваше мнение, чтобы понимать куда лучше двигать развитие библиотеки.
P.S. также можете предлагать другие идеи