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

161
Visualizações
¿Ruby pasa símbolo(s) como argumento(s) de palabra clave?

Tengo un método, donde quiero usar parámetros de palabras clave y declaraciones de caso/cuándo, donde preferí usar símbolos:

 def navigate_to(page:) case page when :inbox # some code when :archive # some code else # some code end end

¿Es esta la sintaxis correcta al llamar al método?

 navigate_to page: :inbox

El : : parece un poco extraño.

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

0

La sintaxis del argumento de palabra clave es:

 key: value

Si la clave es la page y el valor es el símbolo :inbox de entrada, de hecho tiene:

 page: :inbox

También podría usar un argumento posicional en su lugar:

 def navigate_to(page) # same as your code end navigate_to :inbox
over 4 years ago · Santiago Trujillo Relatório

0

Sí, la sintaxis correcta es navigate_to page: :inbox .

Si bien esto es Ruby común, es corto y equivalente para varias cosas diferentes. Primero, los frenos.

En realidad estás llamando:

 navigate_to(page: :inbox)

En segundo lugar, el patrón de argumento de palabra clave se origina a partir de hashes como argumentos. Antes de que hubiera argumentos de palabras clave, una forma común sería pasar un hash[1], así:

 def navigate_to(options) page = options[:page] end navigate_to({ page: :inbox })

Pero cuando el último argumento en una llamada de método es un hash, uno puede omitir el {} .

Y por último, las claves reales en el hash. Hace un tiempo (1.8 -> 1.9 IIRC) se introdujo una versión corta para lo siguiente:

{ :page => 'Some Value' } , es decir, { page: 'Some Value' } . Cuando Some Value es un símbolo, se convierte en { page: :inbox } .

Entonces, tomando todo eso:

 navigate_to page: :inbox

Se origina de:

 navigate_to({ :page => :inbox })

Podría tener más sentido leerlo así, o saber que proviene de eso.

Y conozco Ruby, ni ruby-ist, como llaves, () , como se puede ver en el alucinante DSL de, por ejemplo, rspec, pero puedo aconsejar especialmente a los nuevos desarrolladores que las agreguen. A menudo hace que el código sea más comprensible.

navigate_to(page: :inbox) es probablemente más fácil de entender que navigate_to page: :inbox de entrada , especialmente cuando comienzas a llamar a través de otros métodos: navigate_to page page_from_session :user .


[1] Pero, para enfatizar, eso no es realmente lo que está sucediendo aquí. Los argumentos de palabras clave y los argumentos hash difieren, ahora que tenemos argumentos de palabras clave. esto solo muestra por qué la sintaxis es así.

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