duplicate
Возвращает клон (или глубокую копию) объекта или переменной, не сохраняя ссылку на оригинал. Используйте эту функцию для дублирования сложных структур, таких как вложенные структуры и запросы. При дублировании экземпляра CFC копируется всё содержимое CFC, включая значения переменных в области this на момент вызова функции Duplicate. После этого два экземпляра CFC становятся независимыми, и изменения в одной копии, например при вызове одной из её функций, не влияют на другую копию. Примечание: с помощью этой функции нельзя дублировать объект COM, CORBA или JAVA, возвращённый тегом cfobject или функцией CreateObject. Если элемент массива или поле структуры содержит объект COM, CORBA или JAVA, нельзя дублировать массив или структуру.
duplicate(object) → returns any
Справочник по аргументам
object any Обязательный
deepcopy boolean
По умолчанию: true
true
true (по умолчанию), дочерние элементы также клонируются. Если задано значение false, дочерние элементы сохраняют ссылку на соответствующий элемент исходного объекта. Примечание: тип данных глубоко клонированных элементов, которые не являются нативными объектами Lucee (т. е. объектами Java), может измениться, если их можно преобразовать в нативный объект CFML. Совместимость
ColdFusion:
Примеры Пример кода с вызовом функции duplicate
myNewStruct содержит ссылку на myStruct, поэтому при изменении myNewStruct соответствующим образом изменяется и myStruct, поскольку это одна и та же структура, присвоенная двум переменным. В отличие от неё, myOtherNewStruct — это копия, поэтому при изменении myOtherNewStruct значение myStruct остаётся неизменным: функция duplicate создаёт новую уникальную структуру с теми же парами ключ-значение, поэтому ссылки у них разные.
myStruct = {'foo': 'Lorem ipsum', 'bar': 'baz'};
myNewStruct = myStruct;
myOtherNewStruct = duplicate(myStruct);
myNewStruct.foo = 'ahmet sun';
myOtherNewStruct.foo = 'dolor sit';
writeOutput(myStruct.foo&' → '&myNewStruct.foo&' → '&myOtherNewStruct.foo); Ожидаемый результат: ahmet sun → ahmet sun → dolor sit
© 2012–present Foundeo, Inc. and the CFDocs contributors.
Licensed under the MIT License.
ColdFusion is a trademark of Adobe Systems Incorporated.
https://cfdocs.org/duplicate