Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

329
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!