Size: a a a

2020 September 18

SB

Sergey Bodrov in Delphi & Lazarus
Сергей Пятыгин
Сергей, а Вы имеете ввиду передавать в функцию/процедуру?
Да. Модификатор var говорит, что изменения параметра внутри функции/процедуры будут доступны и после выхода из функции/процедуры. Если нужно только выдавать наружу результат, то есть модификатор параметра out.
источник

СП

Сергей Пятыгин... in Delphi & Lazarus
Sergey Bodrov
Да. Модификатор var говорит, что изменения параметра внутри функции/процедуры будут доступны и после выхода из функции/процедуры. Если нужно только выдавать наружу результат, то есть модификатор параметра out.
Хорошо, спасибо!
источник

М

Михаил in Delphi & Lazarus
Sergey Bodrov
Да. Модификатор var говорит, что изменения параметра внутри функции/процедуры будут доступны и после выхода из функции/процедуры. Если нужно только выдавать наружу результат, то есть модификатор параметра out.
А чем отличается var от out?
источник

SB

Sergey Bodrov in Delphi & Lazarus
Михаил
А чем отличается var от out?
out не гарантирует передачи значения параметра внутрь функции. Технически отличий больше, но не помню точно их суть.
источник

AI

Alexander Ivanov in Delphi & Lazarus
Михаил
А чем отличается var от out?
При out - компилятор должен инициализировать значением по умолчанию.
источник

VA

Viktor Akselrod in Delphi & Lazarus
Михаил
А чем отличается var от out?
с точки зрения компилятора я разницы не видел. хотя кто-то говорит, что иногда может генерировать разный код.
чисто номинально, var - это input/output by reference, out - output by reference
источник

М

Михаил in Delphi & Lazarus
Sergey Bodrov
out не гарантирует передачи значения параметра внутрь функции. Технически отличий больше, но не помню точно их суть.
В смысле на гарантирует?
источник

AI

Alexander Ivanov in Delphi & Lazarus
Вызыванная процедура должна инициализировать значением по умолчанию out
источник

М

Михаил in Delphi & Lazarus
Alexander Ivanov
При out - компилятор должен инициализировать значением по умолчанию.
Да ладно? Это как ?
источник

AI

Alexander Ivanov in Delphi & Lazarus
Но в делфи вызывающая процедура это длеает.
источник

М

Михаил in Delphi & Lazarus
Alexander Ivanov
Вызыванная процедура должна инициализировать значением по умолчанию out
Что? Пиши по русски
источник

SB

Sergey Bodrov in Delphi & Lazarus
FreePascal ругается, если в var передается неинициализированная переменная. А если out то не ругается.
источник

М

Михаил in Delphi & Lazarus
Viktor Akselrod
с точки зрения компилятора я разницы не видел. хотя кто-то говорит, что иногда может генерировать разный код.
чисто номинально, var - это input/output by reference, out - output by reference
Вот вот, вообще не понимаю в чём отличие.

Раньше я думал, что будет предупреждение, если out переменная не заполняется, но нет
источник

AI

Alexander Ivanov in Delphi & Lazarus
когда ты используешь var - то значение переменной может не инициализироваться, в out - инициализация обязательна - это делает компилятор.
источник

М

Михаил in Delphi & Lazarus
Sergey Bodrov
FreePascal ругается, если в var передается неинициализированная переменная. А если out то не ругается.
Хинт?
источник

AI

Alexander Ivanov in Delphi & Lazarus
Михаил
Вот вот, вообще не понимаю в чём отличие.

Раньше я думал, что будет предупреждение, если out переменная не заполняется, но нет
Отличие только в том, что при out компилятор инициализирует переменную.
источник

VA

Viktor Akselrod in Delphi & Lazarus
Alexander Ivanov
Отличие только в том, что при out компилятор инициализирует переменную.
кто тебе такое сказал? есть доказательства?
источник

М

Михаил in Delphi & Lazarus
Alexander Ivanov
когда ты используешь var - то значение переменной может не инициализироваться, в out - инициализация обязательна - это делает компилятор.
В смысле делает инициализацию?

Разве значение не будет таким каким его передает вызывающий код?
источник

VA

Viktor Akselrod in Delphi & Lazarus
Михаил
В смысле делает инициализацию?

Разве значение не будет таким каким его передает вызывающий код?
будет именно таким, как ты передал
источник

AI

Alexander Ivanov in Delphi & Lazarus
Viktor Akselrod
кто тебе такое сказал? есть доказательства?
Документация MSDN. Доказательства в отладчике.
источник