[Новая фича] Переопределение автоматического конструктора
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.04.10 14:56
Оценка:
Все привет.

Реализовал следующую возможность.

Если мы имеем класс с автоматически создаваемым конструкторо (например, с помощью макроса Record) или вхождение варианта, то раньше нельзя было создать конструктор с той же сигнатурой. Это приводило к тому, что во вхождениях вариантов нельзя было изменить логику конструирования объекта. Теперь если добавить к рукописному конструктору модификатор "new" и у сгенерированного конструктора не будет такого же модификатора, то компилятор предпочтет рукописный конструктор (точнее конструктор помеченный модификатором new). Пример:
public variant X
{
  | A
    {
      x : int;
      
      // this replace autogenerated (by Record macro) ctor
      public new this(_x : int)
      {
        x = _x * 2;
      }
    }


Соответствующий тест: redefine-generated-ctor.n.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.