¿Los objetos ColdFusion (es decir, los CFC invocados a través de cfobject) pasan normalmente por referencia o por valor (copiados en la memoria)? ¿Y es posible forzar a ColdFusion a pasar un objeto de cualquier manera?¿Se pasan los objetos ColdFusion por referencia o por valor?
Respuesta
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().
Bueno, tenga en cuenta que el uso de duplicate() doesn't work in MX 7 para copiar ciertas cosas, como CFC y objetos COM, CORBA y Java. Usted can copy a CFC in CF 8, sin embargo.
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.
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.
- 1. ¿Los objetos en PHP pasan por valor o referencia?
- 2. ¿Las variables PHP se pasan por valor o por referencia?
- 3. ¿Se pasan objetos PHP5 por referencia?
- 4. Si se pasan objetos por alias, ¿cuándo pasaría por referencia?
- 5. Propiedades: por valor o referencia?
- 6. ¿Las matrices numpy se pasan por referencia?
- 7. ¿Se pasan los bools de Python por valor?
- 8. Pasar objetos por referencia o valor en C#
- 9. Php pasado por valor o por referencia
- 10. ¿Los contenedores que pasan por valor invalidan los iteradores?
- 11. Cómo devolver punteros inteligentes (shared_ptr), por referencia o por valor?
- 12. de llamadas en tiempo pasan por referencia se ha eliminado
- 13. Pasar cadenas de C++ por valor o por referencia
- 14. Delphi paso de parámetros por referencia o por valor/copia
- 15. ¿Se realizan asignaciones de variables múltiples por valor o referencia?
- 16. ¿List <>. IndexOf se compara por referencia o valor?
- 17. Procesamiento de datos por referencia o por valor en python
- 18. Javascript por referencia vs. por valor
- 19. plantilla pasar por valor o referencia const o ...?
- 20. Pasando matrices por valor y por referencia
- 21. Ámbito de funciones/variables (¿pasar por valor o referencia?)
- 22. ¿Es mejor pasar por valor o por referencia para los tipos de datos básicos?
- 23. .NET Paso de parámetros - por referencia v/s por valor
- 24. lPass por valor & Pase por referencia
- 25. Acceso a las variables por valor o referencia
- 26. Pasa por valor/referencia, ¿qué?
- 27. Tipos alineados y argumentos que pasan por valor
- 28. php array assign copiando valor o por referencia?
- 29. Confundido, si Java usa la llamada por valor o llama por referencia cuando se pasa una referencia de objeto?
- 30. C++ catch blocks: captura la excepción por valor o referencia?
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 –
Al igual que Java, ColdFusion no tiene punteros, por lo que las definiciones de "por referencia" y "por valor" se simplifican. –
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 –