2008-10-20 27 views

Respuesta

28

Los objetos ColdFusion se pasan por referencia. Realmente no hay una manera de pasar un objeto por valor, pero puede crear una copia utilizando la función duplicate().

+0

Según entendí, al igual que Java ColdFusion pasó una referencia por valor. Esto es sutilmente diferente a pasar por referencia porque si una función pasa un objeto como argumento 'in' y luego' in' se cambia dentro de la función a un objeto completamente diferente que no afecta a la variable pasada a la función. Mientras que en C, donde realmente se puede pasar por referencia, la variable pasada se vería afectada –

+0

Al igual que Java, ColdFusion no tiene punteros, por lo que las definiciones de "por referencia" y "por valor" se simplifican. –

+0

Si bien esto es cierto (y por lo tanto no hay una verdadera referencia de paso a paso, afortunadamente) la diferencia entre pass-by-reference y pass-a-reference-by-value sigue siendo importante. Esta pregunta con respecto a Java hace un muy buen trabajo al explicar el problema; http://stackoverflow.com/q/40480/2187042 –

10

Los objetos complejos como las estructuras y los CFC se pasan por referencia, pero si pasa una matriz a una UDF, se pasa por valor. Esto hace que sea imposible escribir una función definida por el usuario que muta una matriz como lo hacen las funciones de matriz incorporadas. Si realmente necesita pasar una matriz por referencia, puede envolverla en una estructura, y luego se pasará por referencia.

4

FWIW, las matrices también se pasan por referencia en el motor Railo CFML, como muchos desarrolladores creen que deberían. También se espera que Railo 3.1 ofrezca una configuración administrativa que le permita elegir el comportamiento predeterminado para la compatibilidad opcional con Adobe CF.

Cuestiones relacionadas