Tengo un objeto que estoy pasando en una llamada a método. Digamos que estoy usando un lenguaje que solo le permite pasar objetos por referencia, como Java o PHP. Si el método realiza cambios en el objeto, afectará a la persona que llama. No quiero que esto suceda. Entonces parece que necesito hacer una copia del objeto.Transferencia de objeto a método: ¿quién hace la copia?
Mi pregunta es: ¿de quién es la responsabilidad de clonar el objeto? La persona que llama, antes de llamar al método? ¿O el llamado, antes de que cambie el objeto?
EDITAR: Solo para aclarar, quiero que esto sea parte del contrato de este método, que nunca modifica el objeto original. Por lo tanto, parece que debería depender el método para hacer la copia. Pero entonces la persona que llama no tiene protección de un método que no hace esto correctamente. Supongo que eso es aceptable, la única alternativa parece ser tener esto incorporado en el lenguaje.
No entiendo esto. Usted tiene un método que realiza cambios en un objeto, pero el contrato implícito del método es que no lo hace. ¿Podrías aclarar esto más? –
Se supone que el método no afecta al objeto de la persona que llama, pero puede cambiar su propia copia del objeto. –