Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

426
Visualizações
¿Por qué usamos el prefijo _ en algunos casos para definir variables de instancia en Ruby?

Veo en las clases de Ruby que algunas personas usan el prefijo _ para definir variables de instancia como @_property mientras que en condiciones normales attr_writer usa el nombre normal como @property para definir variables de instancia.

¿Cuál es el punto de hacer esto y cuál es la diferencia?

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

El prefijo _ no es una característica del idioma, no hace nada especial, es solo una convención.

En la mayoría de los casos, el desarrollador quiere indicar que una variable no está en uso, por ejemplo, una variable de bloque que no se usa en un bloque. O quieren indicar que la variable es una variable interna de un módulo o gema y que otros no deben leer o modificar esta variable directamente.

over 4 years ago · Santiago Trujillo Relatório

0

Hay 2 respuestas posibles aquí dependiendo del tipo de variable.

Instancia variable

Cuando _ se usa para prefijar una variable de instancias (como en su pregunta), generalmente es solo una convención para dejar en claro que esa variable de instancia es un detalle de implementación privado y no debe usarse fuera del alcance actual. Puede encontrarlo especialmente en módulos que se incluirán en algunas otras clases, en cuyo caso la variable de instancia está definida y utilizada por ese módulo, pero pertenece y está dentro del alcance del objeto mismo. Personalmente, prefiero los registros con ámbito de objeto para esto, pero la variable de instancia "privada" es una forma rápida, sucia y popular de hacerlo. Además, el prefijo del nombre de la variable de instancia con _ reduce las posibilidades de conflicto de nombres.

 # Library code module SomeExternalLibraryModule def foo @_something ||= SomeExternalLibraryModule::Something.new(self) end end # Application code class User include SomeExternalLibraryModule attr_reader :something # name conflict "avoided"! Phew! def bar @_something.do_sth # "_" means - you'd better know what you're doing here! # There is no guarantee that instance variable will be present in the future release end end

Variable local

Cuando la variable local tiene el prefijo _ , significa que esa variable no se usa en el código. Es especialmente útil cuando se usan iteradores o se consumen otras entradas de elementos múltiples de las que solo está interesado en uno.

Es bastante común ver solo _ como nombre de variable. Tiene un significado un poco especial para el analizador, que es decir explícitamente "No me importa qué es eso". Como tal, es el único nombre de argumento que se permite varias veces en una sola definición:

 def foo(_, _, a) a end foo(1,2,3) #=> 3 def bar(a,a,b); end #=> SyntaxError

Sin embargo, esta suele ser la mejor práctica para usar "No me importa" con un nombre, lo que te facilitará la vida en el futuro si realmente decides que necesitas usar otros argumentos:

 def foo(_name, _html_options, options) options.delete(:some_option) super end
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda