Передаются ли объекты ColdFusion по ссылке или по значению?
-
03-07-2019 - |
Вопрос
Обычно объекты ColdFusion (то есть CFC, вызываемые через cfobject) обычно передаются по ссылке или по значению (копируются в память)? И можно ли заставить ColdFusion передавать объект любым способом?
Решение
Объекты ColdFusion передаются по ссылке. На самом деле нет способа передать объект по значению, но вы можете создать копию с помощью функции duplicate (). Р>
Другие советы
Имейте в виду, что использование duplicate () не работает в MX 7 для копирования определенных вещей, таких как CFC и COM, CORBA и объекты Java. Вы можете, однако, скопировать CFC в CF 8 . р>
Сложные объекты, такие как структуры и CFC, передаются по ссылке, но если вы передаете массив в UDF, он передается по значению. Это делает невозможным написание пользовательской функции, которая мутирует массив, как это делают встроенные функции массива. Если вам действительно нужно передать массив по ссылке, вы можете обернуть его в структуру, а затем он будет передан по ссылке.
FWIW, массивы также передаются по ссылке в движке Railo CFML, как полагают многие разработчики. Также ожидается, что в Railo 3.1 будет предложен административный параметр, позволяющий вам выбрать поведение по умолчанию для дополнительной совместимости с Adobe CF.