Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

335
Vistas
Cómo asignar un puntero a una variable en Ruby

Soy nuevo en Ruby, solo me pregunto si es posible asignar una referencia a una clave hash a una variable.

 a = { foo: 1 } b = a[:foo] // I don't want assign the value b = 2 puts a

En lugar de asignar el valor, ¿hay alguna forma de asignar una referencia? Es solo que no quiero seguir escribiendo a[:foo] , sino que cada vez que b cambie, quiero reflejarlo en a[:foo] . Tal vez una macro que simplemente reemplace el texto, donde sea que escriba ACCESS_FOO se reemplazará con a[:foo] .

Pido disculpas si esto se pregunta antes. Cada vez que busco punteros, aparece el lenguaje C

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

no puedes

No hay punteros en Ruby, la variable solo contiene una referencia.
https://roberheaton.com/2014/07/22/is-ruby-pass-by-reference-or-pass-by-value/

Pero puedes implementar tu propio método. probablemente usando eval()

over 4 years ago · Santiago Trujillo Denunciar

0

En Ruby, cada variable es solo un puntero/referencia a una instancia, no hay nada más.

 a = { foo: "Hello" } b = a[:foo] b.gsub!('e', 'a') puts a.inspect # => { foo: "Hallo" }

Entonces, en su ejemplo, b no se le asigna una copia de "Hola", realmente es una referencia a la misma instancia almacenada en el hash.

Sin embargo, cuando asigna una variable, está reemplazando la referencia/puntero almacenado en la variable con otra cosa.

Lo que parece intentar hacer es ir un nivel más profundo: desea tener un puntero a una referencia (supongo que una especie de P** en C). En Ruby puedes resolver esto con cualquier tipo de objeto adicional que pueda almacenar tu valor. ¿Qué tal una matriz?

 a = { foo: [1] } b = a[:foo] b[0] = 2 puts a.inspect # => { foo: [2] }
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda