1. Pascal / Говнокод #21780

    −127

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    Если свойство должно только читаться или записываться, в его описании может присутствовать соответствующий метод:
    
        type
        TAnObject = class(TObject)
        property AProperty: TSomeType read GetValue; 
        end;

    В этом примере вне объекта значение свойства можно лишь прочитать; попытка присвоить свойству AProperty значение вызовет ошибку компиляции.
    Для присвоения свойству значения по умолчанию используется ключевое слово default:
    [code] property Visible: boolean read FVisible write SetVisible default True;
    Это означает, что при запуске программы свойство будет установлено компилятором в True

    {Из учебника для долбоёбов, под авторством ***}

    Запостил: Dr_Stertor, 05 Декабря 2016

    Комментарии (12) RSS

    • Тем временем, в Яунде двадцать пять градусов тепла.
      Ответить
    • То есть компилятор вставит вызов SetVisible(True)?
      Ответить
      • На самом деле нет. Default-значение используется только при десериализации объекта, например, из DFM файла, если значение свойства не задано. (Ну и при сериализации позволяет экономить место, не сохраняя значения, равные умолчательному.) Если просто руками создать объект, будет False.
        Ответить
        • А почему False? Разве не GetValue()?
          Ответить
          • Не, GetValue это от другого property :) Будет FVisible = False.
            Ответить
          • @А почему False?
            Потому, что при создании экземпляра класса, у вновь созданного все поля неявно обнуляются.

            @Разве не GetValue()
            Этот метод просто возвращает значение приватной переменной. Он не участвует в инициализации, тем более, что поле - только для чтения.

            Инициализация полей объекта следует выполнять в конструкторе.
            Автор учебника (кстати, кто он?) своей ложью толкает новичков на неверный путь.
            Ответить

    Добавить комментарий