Нужно ли назначать значение по умолчанию для варианта, возвращаемого функцией Delphi?

Постепенно я стал использовать больше вариантов - они могут быть очень полезны в определенных местах для переноса типов данных, которые неизвестны во время компиляции. полезное значение - UnAssigned («У меня нет значения для вас»). Думаю, я давно обнаружил, что функция:

function DoSomething : variant;
begin
  If SomeBoolean then
    Result := 4.5
end;

, похоже, эквивалентна:

function DoSomething : variant;
begin 
  If SomeBoolean then
    Result := 4.5
   else
   Result := Unassigned; // <<<<
end;

Я предположил, что это рассуждение, что вариант имеет должен создаваться динамически, и если SomeBoolean был FALSE, компилятор создал его, но он был «Unassigned» (<> nil?). Чтобы еще больше стимулировать это мышление, компилятор не выдает никаких предупреждений, если вы не присваиваете Result.

Только сейчас Я обнаружил неприятную ошибку, когда мой первый пример (где «Результат» не является явным, по умолчанию установлен на «ноль») фактически возвращал «старое» значение откуда-то еще.

Должен ли я ВСЕГДА назначать Результат (как я это делаю, когда использую prefefined типы) при возврате варианта?

7
задан skaffman 8 July 2011 в 10:39
поделиться