Объекты ColdFusion (то есть CFC, вызываемые через cfobject), обычно передаются по ссылке или по значению (скопированы в память)? И можно ли заставить ColdFusion передавать объект в любом случае?Объекты ColdFusion передаются по ссылке или по значению?
ответ
Объекты ColdFusion передаются по ссылке. Невозможно передать объект по значению, но вы можете создать копию, используя функцию duplicate().
Ну, имейте в виду, что с использованием duplicate() doesn't work in MX 7 для копирования некоторых вещей, таких как CFC и COM, CORBA и Java-объекты. Вы can copy a CFC in CF 8, хотя.
Сложные объекты, такие как структуры и CFC, передаются по ссылке, но если вы передаете массив в UDF, он передается по значению. Это делает невозможным запись пользовательской функции, которая мутирует массив, как это делают встроенные функции массива. Если вам действительно нужно передать массив по ссылке, вы можете обернуть его в структуру, а затем он будет передан по ссылке.
FWIW, массивы также передаются по ссылке в движке RailML CFML, как полагают многие разработчики. Ожидается, что Railo 3.1 предложит административную настройку, позволяющую вам выбрать поведение по умолчанию, для дополнительной совместимости с Adobe CF.
Мое понимание заключалось в том, что точно так же, как java cold fusion передал ссылку по значению. Это немного отличается от передачи по ссылке, потому что если функция передает объект как аргумент `in`, а затем` in` изменяется внутри функции на совершенно другой объект, который не влияет на переменную, переданную функции. Принимая во внимание, что в C, где вы действительно можете передавать по ссылке, передаваемая переменная будет затронута – 2014-12-10 09:12:31