2008-10-20 4 views

ответ

28

Объекты ColdFusion передаются по ссылке. Невозможно передать объект по значению, но вы можете создать копию, используя функцию duplicate().

+0

Мое понимание заключалось в том, что точно так же, как java cold fusion передал ссылку по значению. Это немного отличается от передачи по ссылке, потому что если функция передает объект как аргумент `in`, а затем` in` изменяется внутри функции на совершенно другой объект, который не влияет на переменную, переданную функции. Принимая во внимание, что в C, где вы действительно можете передавать по ссылке, передаваемая переменная будет затронута – 2014-12-10 09:12:31

15

Ну, имейте в виду, что с использованием duplicate() doesn't work in MX 7 для копирования некоторых вещей, таких как CFC и COM, CORBA и Java-объекты. Вы can copy a CFC in CF 8, хотя.

10

Сложные объекты, такие как структуры и CFC, передаются по ссылке, но если вы передаете массив в UDF, он передается по значению. Это делает невозможным запись пользовательской функции, которая мутирует массив, как это делают встроенные функции массива. Если вам действительно нужно передать массив по ссылке, вы можете обернуть его в структуру, а затем он будет передан по ссылке.

4

FWIW, массивы также передаются по ссылке в движке RailML CFML, как полагают многие разработчики. Ожидается, что Railo 3.1 предложит административную настройку, позволяющую вам выбрать поведение по умолчанию, для дополнительной совместимости с Adobe CF.

Смежные вопросы