Spec-Zone.ru › ColdFusion

duplicate

Возвращает клон (или глубокую копию) объекта или переменной, не сохраняя ссылку на оригинал. Используйте эту функцию для дублирования сложных структур, таких как вложенные структуры и запросы. При дублировании экземпляра CFC копируется всё содержимое CFC, включая значения переменных в области this на момент вызова функции Duplicate. После этого два экземпляра CFC становятся независимыми, и изменения в одной копии, например при вызове одной из её функций, не влияют на другую копию. Примечание: с помощью этой функции нельзя дублировать объект COM, CORBA или JAVA, возвращённый тегом cfobject или функцией CreateObject. Если элемент массива или поле структуры содержит объект COM, CORBA или JAVA, нельзя дублировать массив или структуру.

duplicate(object) → returns any

  • CF4.5+
  • Lucee
  • BL 1.0.0+
  • См. также: structCopy

    Справочник по аргументам

    object any
    Обязательный

    Имя объекта для дублирования.

    deepcopy boolean
    По умолчанию: true

    Только для Lucee. Если задано значение true (по умолчанию), дочерние элементы также клонируются. Если задано значение false, дочерние элементы сохраняют ссылку на соответствующий элемент исходного объекта. Примечание: тип данных глубоко клонированных элементов, которые не являются нативными объектами Lucee (т. е. объектами Java), может измениться, если их можно преобразовать в нативный объект CFML.

    Совместимость

    ColdFusion:

    Версия 4.5+ В CFMX эту функцию можно использовать с объектами XML. В CF8 её можно использовать для дублирования CFC.

    Примеры
    Пример кода с вызовом функции 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

    Spec-Zone.ru

    Настройки Оффлайн Что нового Помощь О нас
    Spec-Zone .ru
    спецификации, руководства, описания, API