Расширенные свойства - обсуждение


#1
type
  T = class
    property X: integer read 0;
    property Y: integer read X; // Program1.pas(4) : В качестве акцессора можно указывать только метод или поле класса
  end;

begin
end.

Такое планируется разрешить в дальнейшем?


#2

Нет, надо писать integer(X). Это чтоб дельфиоиды не злились сделано. То есть иначе это будет мешаться с обычным синтаксисом, и для тех кто привык к дельфи - будет сложнее найти ошибку.


#3

Спасибо. Странно… Использовать оператор приведения типов только ради того, чтобы не смешивать синтаксисы… Притом, что типы одинаковые.


#4

А, стоп, у них совпадают типы… Теперь и я не понимаю как правильно. @Admin, что скажете?


#5

Хороший пример, спасибо. Делайте Issue, а мы подумаем, разрешать такое или нет. Здесь конкурируют старые и новые свойства. Возможно, такое нельзя будет сделать. То есть, если это простое имя в Readerе, то это - старые свойства, если составное, - то новые. Пока логика такая, и она более-менее интуитивно понятная. Если разрешить это, старые и новые свойства сольются. Ну например, если X - это вызов внешней функции без параметров. Здесь хорошо ожидаемое поведение, а так программист не будет понимать, что происходит


#6

Хорошо.


#7

Вопрос снят @Admin:

В документации пропишем, что если это имя, то оно должно быть именем поля или функции без параметров - членом этого класса


#8