Entry tags:
c# ramblings
почему в интерфейсе не может быть конструкторов? аррргх.
насчет “в языке нету синтаксиса” – делается на раз-два. ISomeType something= new<ISomeType> typeVariable(arg, arg2, arg3), например. И статический чекинг, и все тут, и не конфликтует ни с чем.
без синтаксиса делается тоже на раз-два, либо фабриками, либо рефлекшеном, но некрасиво это :/
У меня ностальгия по питоновой общности между constructors, factories и вообще callables…
no subject
no subject
Аналогично new() constraint, вот только с произвольным набором параметров.
no subject
только это не для интерфесов, а скорее для трейтов фича...
no subject
no subject
я думал Scala traits поддерживают такую фичу, как ты хотел... но оказывается нет.
для меня трейт был "статическим требованием на тип: т.е. списком методов с сигнатурами, которые класс обязан объявлять"
но тогда непонятно, чем это отличается от констрейнтов...
no subject
у меня пока были два определения:
- "трейт - это такой навороченный тип" (например, типу-группе неплохо бы иметь не только бинарную операцию, а и ноль там, единицу, ...)
- "трейт - это штука, которая позволяет расширить значение типа определенными свойствами". но теперь я думаю что это то ли mixin то ли вообще монада (если трейт может являться прокси-обьектом, как например здесь http://code.enthought.com/projects/traits/ )
короче, каша в голове у меня.
no subject
no subject
no subject
no subject
* Свойства могут быть использованы как фиксированые свойства (т.е без использования класса свойств в качестве шаблонных параметров)
* Параметры свойств имеют обычно есстественные значения по умолчанию (которые крайне редко переопределяются) или вообще не могут быть переопределены.
* Параметры свойств имеют тенденцию к сильной зависимости от одного или нескольких основных параметров.
* Свойства обычно содержат типы и константы, а не функции-члены.
* Свойства имеют тенденцию к агрегации в шаблоны свойств.
(C) Джоасатис & Водервурд - Шаблоны С++, Классы Свойств и Стратегий.
no subject
Зачем?
no subject
no subject
Вводить метод construct и фабрики, и усложнять пространство состояний, рискуя получить недоинициализированный обьект - не хочется как-то.
no subject
Можно требовать необходимый конструктор в рантайм.
no subject
А насчет не очень частый... ну... удобно же! :)
no subject
no subject
+ констрейнты на конструкторы с аргументами.
+ трейты.
+ тайпклассы.
А ещё таблеток от жадности.
no subject
no subject
no subject
no subject
точнее, между метаклассом, классом и factory.
в этом смысле static virtual - это всего лишь virtual у метакласса :)
no subject
no subject
no subject
по существу: пример не понял. что такое typeVariable?
no subject
typeVariable - переменная типа System.Type, которую хочется инстанцировать динамически, но чтобы факт наличия конструктора с нужными параметрами проверялся компилятором статически, на основании информации о типе, указанной в new<>
no subject