eiffel: semanti c ЛЮБОГО по умолчанию - PullRequest
0 голосов
/ 16 июня 2020

Удивлен, что по умолчанию в классе ANY это заморожено и без реализации ???, что такое семанти c для этой функции ??

Класс ANY

frozen default: detachable like Current
        -- Default value of object's type
    do
    end

Я намеревался определить default: like Current или, возможно, отделяемый, который возвращает значение по умолчанию для текущего Class, поэтому переопределить it ...

1 Ответ

1 голос
/ 16 июня 2020

Это значение по умолчанию для отделяемой версии типа. Для ссылочных типов это Void. Для расширенных типов это соответствующее значение по умолчанию, то есть значение, инициализированное с помощью default_create. Например, для BOOLEAN это False.

Если расширенный класс предоставляет конкретную c реализацию default_create, он используется для инициализации Result даже без тела в default. Например, рассмотрим класс

expanded class X inherit ANY redefine default_create end feature
    item: INTEGER_32
    default_create do item := 42 end
end

Для переменной x типа X выражение x.default.item даст 42. Когда вызывается default, значение Result равно инициализируется вызовом X.default_create, который устанавливает item. Таким образом, никаких инструкций в теле default не требуется.

Подводя итог, default возвращает

  • Void для ссылочных типов;
  • a значение по умолчанию для расширенных типов, которые не переопределяют default_create, включая базовые c типы: False, 0, 0.0, et c. Если расширенный тип имеет вложенные атрибуты, они инициализируются рекурсивно с использованием того же правила.
  • значение, полученное путем вызова default_create в противном случае.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...