Size: a a a

2020 December 23

K

Kass in Delphi & Lazarus
Alfred 🏳️ Yait
хм, я думал уходит если задать var. Тоесть лучше создать копию массива сделать чтобы не изменялся A
var для простых типов, объекты уходят по ссылке
источник

AY

Alfred 🏳️ Yait in Delphi & Lazarus
Kass
var для простых типов, объекты уходят по ссылке
спасибо)
источник

K

Kass in Delphi & Lazarus
Alfred 🏳️ Yait
спасибо)
TMagic же объект некий?
источник

AY

Alfred 🏳️ Yait in Delphi & Lazarus
Kass
TMagic же объект некий?
угу, собственный тип (array of array of real)
источник

DB

Dmitry Belkevich in Delphi & Lazarus
Kass
var для простых типов, объекты уходят по ссылке
чет вы путаете. внутри должна быть как копия
источник

DB

Dmitry Belkevich in Delphi & Lazarus
в массивах именно
источник

K

Kass in Delphi & Lazarus
Dmitry Belkevich
чет вы путаете. внутри должна быть как копия
для простого типа - да, для объекта нет
источник

K

Kass in Delphi & Lazarus
Dmitry Belkevich
в массивах именно
а там свой тип объявлен, но мне сдается что делфи его передала по ссылке
источник

DB

Dmitry Belkevich in Delphi & Lazarus
хмммм... гляну у себя. может быть разница
источник

K

Kass in Delphi & Lazarus
Dmitry Belkevich
хмммм... гляну у себя. может быть разница
надо попробовать массив и объявить свой тип массива для проверки, пока не могу проверить
источник

DB

Dmitry Belkevich in Delphi & Lazarus
я тоже чуть позже. пока работа
источник

SB

Sergey Bodrov in Delphi & Lazarus
Alfred 🏳️ Yait
Сап, чат
передаю исходный массив в качестве параметра в функцию.
Проблема в том, что изменяется исходный массив, хотя так не должно быть. Все массивы динамические. Где я мог накосячить?
Передавай как const параметр
источник

SB

Sergey Bodrov in Delphi & Lazarus
Тогда неважно, по ссылке или нет, компилятор проследит, чтобы ты его не изменял внутри функции
источник

K

Kass in Delphi & Lazarus
Sergey Bodrov
Тогда неважно, по ссылке или нет, компилятор проследит, чтобы ты его не изменял внутри функции
если это ссылка - то данные будут меняться, а ссылка нет
источник

VA

Viktor Akselrod in Delphi & Lazarus
Dmitry Belkevich
чет вы путаете. внутри должна быть как копия
это динамический массив. он работает по ссылке, с счетчиком.
ес-но внутри функции оказывается тот же самый массив, только RefCount + 1
источник

VA

Viktor Akselrod in Delphi & Lazarus
Kass
для простого типа - да, для объекта нет
дин массив все же это не объект. просто управляемый тип
источник

K

Kass in Delphi & Lazarus
Viktor Akselrod
дин массив все же это не объект. просто управляемый тип
но идет по ссылке, верно же?
источник

VA

Viktor Akselrod in Delphi & Lazarus
Kass
но идет по ссылке, верно же?
верно. чуть выше написал про это
источник

SB

Sergey Bodrov in Delphi & Lazarus
Kass
если это ссылка - то данные будут меняться, а ссылка нет
Это магия компилятора, которая для ссылочных типов имитирует поведение нормальных типов. Но недостаточно логично имитирует. Например, для строк сделано copy-on-write, а для массивов нет.
источник

SB

Sergey Bodrov in Delphi & Lazarus
Но декоратор const работает логично, он и ссылку защищает, и данные.
источник