Вход | Регистрация



Что такое мутабельное значение?

Что такое мутабельное значение?
Я
   Tonik992
 
01.11.18 - 14:33
До сих пор не могут понять, что такое мутабельное значение.
Объясните мне популярным языком, что есть мутабльное значение, какие есть в 1С, и почему именно они - мутабельные?
 
 
   Cool_Profi
 
1 - 01.11.18 - 14:34
Например, объект. Его можно менять. А ссылку менять нельзя, поэтому она не мутабельная
   Tonik992
 
2 - 01.11.18 - 14:36
(1) Таблицу значений можно менять, структуру.. Список значений, массив, переменную примитивного типа.. Но они не мутабельные
   PR
 
3 - 01.11.18 - 14:44
   Tonik992
 
4 - 01.11.18 - 14:49
(3) >>> Мутабельный тип (от англ. Mutable - изменчевый) - сложный тип данных (как правило - объекты), которые после своего создания допускают изменение своих свойств.

Ниже написано:
Проверить, что переменная Количество с типом "число" не содержит "ноль" - можно, а вот понять что такое "пустое" для СписокЗначений (то ли все значения списка равны нулю, то ли нет ни одного значения списка, или что-то иное) - однозначно нельзя.

Однако, ЗначениеЗаполнено(Массив) - сработает, и не выдаст ошибку мутабельности. Хотя для массива действует тоже самое предположение автора: (то ли все значения массива равны нулю, то ли нет ни одного значения массива, или что-то иное). Поэтому с такими выводами я не согласен.

Если СписокЗначений Мутабельный, как сопоставить этот тип данных с правилом "которые после своего создания допускают изменение своих свойств"? У структуры есть свойства, но она не мутабельная.
   Tonik992
 
5 - 01.11.18 - 14:51
(3) Мне больше важны академически знания, а не эмпирические -)
   Tonik992
 
6 - 01.11.18 - 14:54
Наверное это как-то связано с хранением объекта в памяти?
   dezss
 
7 - 01.11.18 - 14:57
И буква "Я" не помогает?
   Tonik992
 
8 - 01.11.18 - 15:02
(7) Больше помогает What is mutable type на английском. Там больше описаний:

Some objects are mutable, meaning they can be altered.  Others are immutable; they cannot be changed but rather return new objects when attempting to update.

То есть при изменении значения не мутабельного объекта создается новый, а не изменяется старый.

string_build = ""
for data in container:
    string_build += str(data)
In reality, this is very inefficient. Because strings are immutable, concatenating two strings together actually creates a third string which is the combination of the previous two.

(7) Я не смог найти -(
   palsergeich
 
9 - 01.11.18 - 15:05
(8) 1С вкладывает в это чуть чуть другой смысл. Смирись
   Cyberhawk
 
10 - 01.11.18 - 15:06
Мутабельный в 1С - это для которого в клиент-серверной реализации платформы не реализована сериализация-десериализация при обмене с сервером приложений.

В режиме ОП и УП одни и те же объекты встроенного языка различаются мутабельностью. Например, табдок и СЗ в ОП мутабельные, а в УП уже нет.
 
 Рекламное место пустует
   Tonik992
 
11 - 01.11.18 - 15:17
(10) (9) Получается, что именно так..
Спасибо
   Вафель
 
12 - 01.11.18 - 15:18
(10) при передаче тз вроде не про мутабельность ошибка выходит.
   Злопчинский
 
13 - 01.11.18 - 15:24
тупой вопрос: почему ТЗ нельзя сериализовать/десериализовать и передать между клиентом и сервером?
   Вафель
 
14 - 01.11.18 - 15:25
(13) говорят можно (через ВК), просто 1с не открыло доступ
   Вафель
 
15 - 01.11.18 - 15:25
(14) Можно на клиенте ТЗ поиметь
   Cyberhawk
 
16 - 01.11.18 - 15:26
(12) Дак в УФ везде не про мутабельность выходит ошибка
"Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа"
   Злопчинский
 
17 - 01.11.18 - 15:42
не, вот почему нельзя? какая принципиальная трудность разложить ТЗ в XML..? или я вообще ничего не понимаю?
   Cool_Profi
 
18 - 01.11.18 - 15:52
(15) Можно. Только перед этим она тебе поимеет.
(17) Так принято решение Гениальным архитектором. Кто ты такой, чтобы оспаривать его решение?
   VS-1976
 
19 - 01.11.18 - 15:53
(17) Скорее 1С разработала ограниченную сериализацию только для того, что бы программисты новички не увлекались перетаскиванием всей базы с сервера на клиента и обратно...
   Злопчинский
 
20 - 01.11.18 - 15:55
(18) каюсь и лобызаю стопы Гениального архитектора
   Вафель
 
21 - 01.11.18 - 15:57
(19) сериализация тз в хмл вполне себе есть
   VS-1976
 
22 - 01.11.18 - 16:09
(21) Я в общем, а не про тз.
   ptiz
 
23 - 01.11.18 - 16:12
(13) Как это нельзя? С каких пор?
ТаблицаЗначений (ValueTable)
Доступность:
Сервер, толстый клиент, внешнее соединение.
Возможен обмен с сервером. Сериализуется.
   Tonik992
 
24 - 01.11.18 - 16:36
(23) Да, однако в тонком клиенте ТЗ нельзя использовать.

(17) Может, потому что это особенности связанные с вебклиентом? Типа в ТЗ есть индексы.. Х3, а 1С не объясняла это, может кто-то из разработчиков платформы повеял это?
   Tonik992
 
25 - 01.11.18 - 16:38
(16) Да, в УФ мутабельности нет. И кстате в УФ уже можно сделать
ЗначениеЗаполнено(СписокЗначений)
И
ЗначениеЗаполнено(ТаблицаЗначений)
   Вафель
 
26 - 01.11.18 - 16:56
(24) индексы можно и на клиенте и на веб клиенте вполне создавать
   Cyberhawk
 
27 - 01.11.18 - 16:59
(25) "кстате в УФ уже можно сделать" // Ну, про это вроде во второй части (10) написано
   Провинциальный 1сник
 
28 - 01.11.18 - 17:00
Мутабельный объект - это который существует только в памяти клиента или конкретного рабочего процесса сервера и не может быть передан с клиента на сервер или между рабочими процессами, и не может быть сохранен в базе или сериализирован.
   Tonik992
 
29 - 01.11.18 - 17:10
(28) Насчет сериализации некорректно.

Я, например, в режиме толстого клиента ОП могу на клиенте создать объект ПостроительОтчета, получить настройки (НастройкиПостроителяОтчета), а передать на сервер (через процедуру модуля с флагом ВызовСервера) не могу, т.к. выйдет ошибка "Попытка передачи с клиента на сервер мутабельного значения"

Однако, я могу поместить в ХранилищеЗначения (т.к. данный объект Сериализуется), и передать через ХЗ. А на стороне сервера распокавать.
   Cyberhawk
 
30 - 01.11.18 - 17:12
(28) "или между рабочими процессами" // А как такую передачу можно вызвать?
   Вафель
 
31 - 01.11.18 - 17:14
(30) фоновое с параметрами
   youalex
 
32 - 01.11.18 - 17:15
(29) А если ты получишь настройки через ПолучитьНастройки() - то сможешь передать, сами настройки построителя - не мутабельны в данном смысле
   Tonik992
 
33 - 01.11.18 - 17:17
Да не, СправочникОбъект даже сериализуется спокойно в XML.

(32) Я только что проверил. Настройки получаю через ПолучитьНастройки(). И объект НастройкиПостроителяОтчета  не передается на сервер, т.к. выдается ошибка мутабельности.
 
 
   Cyberhawk
 
34 - 01.11.18 - 17:17
   Cyberhawk
 
35 - 01.11.18 - 17:24
(31) Точняк, спс.
Забыл уже, что совсем недавно эту ошибку ловил (передавая в параметр ФЗ несериализуемое значение): "Параметр фонового задания не поддерживает сериализацию".
   Cyberhawk
 
36 - 01.11.18 - 17:28
(33) "СправочникОбъект даже сериализуется спокойно в XML" // А толку. Короче можешь считать, что в 1С "мутабельный" это у которого в СП нет фразы "Возможен обмен с сервером" или "Сериализуется" (без приписки ХДТО).
   youalex
 
37 - 01.11.18 - 17:30
(33) да, согласен
   dezss
 
38 - 01.11.18 - 17:36
(8) ага...а теперь питон)))
a = [1,2,3]
a += [4]
id(a)
a = a + [5]
id(a)

И какой это объект, мутабельный или нет?

так что все зависит от языка)
   Гад
 
39 - 01.11.18 - 17:41
(0) неприличными словами прошу не выражаться (с) шариков
   Tonik992
 
40 - 01.11.18 - 17:51
(38) Мутабельный.
Я угадал?
   ДНН
 
41 - 01.11.18 - 18:03
(28) "...и не может быть сохранен в базе или сериализирован."
ДокументОбъект - это ведь мутабельный объект. Разве он не может быть сохранен в базе?
   Сияющий в темноте
 
42 - 01.11.18 - 19:12
Ну,в Visual basic и вообще а Ole,массив это не обьект,а значение.
   Провинциальный 1сник
 
43 - 01.11.18 - 21:52
(41) Тут мы имеем некий дуализм. Документ как представление объекта в программном интерфейсе и собственно объект, записанный в информационную базу. Мы не можем, например, записать в реквизит этот объект - можем только ссылку.
   VS-1976
 
44 - 01.11.18 - 22:03
(25) к твоему сведению не только в УФ. И это просто проверка на колличество()...
   Сияющий в темноте
 
45 - 01.11.18 - 22:26
Просто,мутабельный подразумевает наличие скрытых свойств,которые при сохранении недоступны.

структура и соответствие обьекты,но с прозрачным поведением,и к базе данных не привязаны.
почему массив в 1с обьект,вопрос к создателям,но,если бы он не был обьектом,то пришлось бы вводить ссылки на переменные,так как иначе происходило бы копирование массива при передаче в другую переменную.
   dezss
 
46 - 02.11.18 - 08:39
(40) а ты выполни этот код и посмотри...
если исходить из твоего определения в (8):
"То есть при изменении значения не мутабельного объекта создается новый, а не изменяется старый."
То он оказывается и мутабельным и немутабельным одновременно)))
a += [4] - добавляет элемент, но не создает новый
a = a + [5] - добавляет элемент, но при этом создается новый объект


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует