|
Какие типы являются ссылочными и хранят данные родителя , а какие нет? | ☑ | ||
---|---|---|---|---|
0
FidelBoom
18.11.13
✎
11:17
|
Не знаю, как это называется и как это конкретно объяснить. Суть в следующем..
Допустим когда в коде мы приравниваем структуру к другой, например Структура = Новый Структура; Структура.Вставить("Число",45); ПодчиненнаяСтруктура = Структура; И вот есть мы теперь очистим или изменим первую "Структуру", то измениться и вторая структура тоже, это объясняется тем, что "ПодчиненнаяСтруктура" содержит ссылку на первую и при изменении первой автоматически меняется ссылка. Но например с массивом дела обстоят иначе от структуры, то есть если вместо структур будут 2 массива , то второй массив изменять не будет. Думаю, как это определятся, например что будет с Списком значений? ну и прочие типы переменных. Как это определить скопируется он или будет содержать ссылку? |
|||
1
Wobland
18.11.13
✎
11:22
|
>если вместо структур будут 2 массива , то второй массив изменять не будет
Это сообщение представляет вранье. Я, конечно, не могу знать, в каком именно кафе-шантане сфабриковано это вранье. Но как бы ни врал ТС, он легко может взять и проверить. |
|||
2
Infsams654
18.11.13
✎
11:24
|
(0) написано же "содержит ссылку на первую " - что есть в Структура, то видит и ПодчиненнаяСтруктура.
(1) да, вранье "при изменении первой автоматически меняется ссылка", как она меняется, ежели ПодчиненнаяСтруктура = Структура; |
|||
3
FidelBoom
18.11.13
✎
11:26
|
(1) Вчера проверял,
Если написать следующее: Массив = Новый Массив; Массив.Добавить(123); Массив.Добавить("Строка"); Массив2 = Массив; Массив.Очистить(); //Далее если посмотреть отладчиком "Массив" - будет пустой, а в Массив2 - буду значения "массив". А если были бы структуры они очистились бы обе. Разве не правда? Вчера проверял, своими глазами видел, или мне показалось? |
|||
4
Wobland
18.11.13
✎
11:28
|
(3) проверь сегодня
|
|||
5
FidelBoom
18.11.13
✎
11:29
|
(2) Меняется ссылка.. я имел ввиду , что данные в ссылке изменяются , сама ссылка остается той же, изменяется в смысле, изменяются ее данные. Вот . Извините.
А в массиве взаимосвязи нет. Вот я и хочу узнать где это определить, а то я в синтакс помощник на каждый подобный объект буду лахить. (3)Ок. Сейчас проверю. Спс. |
|||
6
FidelBoom
18.11.13
✎
11:30
|
Не в синтакс помощник, а в отладчик лазаю. Вообщем , мдаа день сегодня будет не очень
|
|||
7
Господин ПЖ
18.11.13
✎
11:30
|
>а то я в синтакс помощник на каждый подобный объект буду лахить
стесняюсь спросить зачем... |
|||
8
Dethmont
18.11.13
✎
11:30
|
Массив = Новый Массив;
Массив.Добавить("Число"); Мас = Массив; Массив.Вставить(0,"Текст"); Сообщить("В новом массиве - "+Мас[0]); |
|||
9
Wobland
18.11.13
✎
11:31
|
напугал, плин
http://i.imgur.com/HsBH40G.png |
|||
10
Wobland
18.11.13
✎
11:31
|
(9) точка останова на возврате
|
|||
11
FidelBoom
18.11.13
✎
11:56
|
Вот скрин, думаю в нем все понятно
http://yadi.sk/d/cDcC3zHpCs3qY |
|||
12
1dvd
18.11.13
✎
12:01
|
(11) ты массивы не менял, а просто менял ссылки в разных переменных. Потому такой эффект
|
|||
13
ДенисЧ
18.11.13
✎
12:03
|
Число, строка, булево, дата - не по ссылкам.
|
|||
14
Serg_1960
18.11.13
✎
12:05
|
(имхо) всё становится легко и ясно, если запомнить простое правило: в переменных примитивного типа - значения, не примитивного типа - ссылки на значения (область памяти)...
|
|||
15
Serg_1960
18.11.13
✎
12:08
|
(13) + NULL и Неопределено :( про них, почему-то, всё время забывают :)
|
|||
16
Infsams654
18.11.13
✎
12:11
|
(11) и что? Так оно и должно быть.
В МассивНаследуемая видно то что было создано изначально в МассивРодитель. МассивРодитель = Массив3; - Переменная МассивРодитель поменялась на Массив3 - это не значит, что область памяти под МассивРодитель изменилась |
|||
17
FidelBoom
18.11.13
✎
12:13
|
Спасибо всем
|
|||
18
1dvd
18.11.13
✎
12:18
|
я тут с другой фиговиной сталкивалсо. ТаблицаЗначений например, всегда передается по ссылке. Даже с служебным словом "Знач"
Процедура ППП() ТЗ = Новый ТаблицЗначений(); ТЗ.Колонки.Добавить("Колонко1"); НоваяСтрока = ТЗ.Добавить(); НоваяСтрока.Колонко1 = "Ну, типа, значение"; ОбработатьТЗ(ТЗ); Сообщить("" + ТЗ.Количество); // Сообщает 0 КонецПроцедуры Процедура ОбработатьТЗ(Знач ТЗ) ТЗ.Очистить(); КонецПроцедуры |
|||
19
ДенисЧ
18.11.13
✎
12:19
|
(18) Это не фиговина. Это описанная возможность платформы.
|
|||
20
fisher
18.11.13
✎
12:49
|
(19) Невнятную статью на ИТС я бы не назвал описанной возможностью платформы. Хотя, примерчик там как раз для ТЗ жевался... Тогда ладно :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |