2012-05-29 20 views
5

Al navegar por la documentación de ruby, encontré the replace method, pero no puedo entender cuál puede ser el caso de uso de este método.¿Por qué hay un String # replace en Ruby?

Lo único que se me ocurre es acerca de la administración de memoria (algo así como no necesitar reasignación si la nueva cadena tiene una longitud menor o igual a la anterior).

¿Alguna idea?

Respuesta

3

El caso de uso es realmente sólo si quieres lograr algo parecido a pasar por referencia en otros idiomas, donde el valor de una variable puede cambiarse directamente. Por lo tanto, podría pasar un String a un método y ese método podría cambiar por completo la cadena a otra cosa.

Sin embargo, podría lograr lo mismo en una forma más redonda vaciando la Cadena y agregando una nueva cadena a la cadena vacía. Otras clases tienen métodos similares (vea Array y Hash).

Si realmente siente la necesidad de utilizar estos métodos, es probable que se haya arrinconado en una esquina y deba buscar otra salida que una que requiera mutar una cadena completa (por ejemplo, pasar una estructura de datos) en un método, en lugar de solo una cadena).

+0

Este enlace es útil para comprender por qué dicho método es útil: http://stackoverflow.com/questions/1872110/is-ruby-pass-by-reference-or-by-value – Scharron

2

Una cadena completa, en oposición a una subcadena, puede ser reemplazado por el método de sustitución: "¡Bienvenido a PHP"

myString = "Welcome to PHP!" 

=>

myString.replace "Goodbye to PHP!" 

=> "¡Adiós a PHP!"

Fuente - http://www.techotopia.com/index.php/Ruby_String_Replacement,_Substitution_and_Insertion#Changing_a_Section_of_a_String

+0

Sí, pero ¿cuál es el punto de hacer eso? 'myString =" Hello "' seguido de 'myString =" world "' hace lo mismo (excepto tal vez para la administración de la memoria?) – Scharron

+1

@Scharron: No, ni remotamente hace lo mismo. 'String # replace' reemplaza el contenido del objeto de cadena. Lo que estás haciendo es asignar una cadena completamente diferente, totalmente no relacionada a la misma variable. –

+0

@ JörgWMittag: Sí, finalmente lo entendí (ver la respuesta aceptada). – Scharron

Cuestiones relacionadas