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

300
Views
¿Problemas con Ruby uno? e incluir? métodos

MCVE (Ejemplo mínimo, completo y verificable) para reproducir el mismo problema que el mío:

en el lugar del archivo rspec:

 RSpec.describe 'Predicate Enumerable Exercises' do describe 'coffee drink exercise' do it 'returns true when espresso is included' do drink_list = ["milk", "juice", "espresso"] expect(coffee_drink?(drink_list)).to be true end end describe 'valid scores exercise' do it 'returns true when only one score is a 10' do score_list = { easy_to_read: 10, uses_best_practices: 8, clever: 7 } perfect_score = 10 expect(valid_scores?(score_list, perfect_score)).to be true end end end

en el archivo de funciones reales:

 def coffee_drink?(drink_list) drink_list.include?("coffee" || "espresso") end def valid_scores?(score_list, perfect_score) score_list.one?{|score| score == perfect_score} end

Tengo dificultades para averiguar qué es lo que está mal en mi código porque confío en métodos integrados (¿uno?, ¿incluir?), así que no estoy seguro de cuál es el problema real.

Creé 2 métodos, coffee_drink?(drink_list) y valid_scores?(score_list, perfect_score) .

coffee_drink? obtiene una matriz, que luego devuelve verdadero solo si incluye la palabra coffee o espresso . Utilicé lo siguiente para devolver lo esperado: drink_list.include?("coffee" || "espresso") Pero cuando tengo espresso en mi lista y no tengo coffee , la consola devuelve:

devuelve verdadero cuando se incluye espresso (FAILED - 1)

Donde drink_list es ["milk", "juice", "espresso"]

Para valid_scores? obtiene una matriz y un entero, y devuelve verdadero cuando solo un valor en la matriz es igual a ese entero. Pero esperaba que score_list.one?{|score| score == perfect_score} devolvería verdadero cuando solo un valor es verdadero. En cambio, obtengo:

devuelve verdadero cuando solo una puntuación es 10 (FALLIDO - 2)

donde esta la matriz

 score_list = { easy_to_read: 10, uses_best_practices: 8, clever: 7 }

y el entero es

 perfect_score = 10

Estoy usando Ruby 2.7.2p137 (2020-10-01 revisión 5445e04352) [x86_64-linux] si eso ayuda.

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

¿Tu include? el código se comporta diferente de lo esperado porque:

 "coffee" || "espresso" #=> "coffee" # so drink_list.include?("coffee" || "espresso") # evaluates to drink_list.include?("coffee")

¿Tendrás que usar 2 include? llamadas, o alguna otra opcion comoany? o & .

 drink_list.include?("coffee") || drink_list.include?("espresso") # or drink_list.any? { |drink| drink == "coffee" || drink == "espresso" } drink_list.any?(/\A(coffee|espresso)\z/) (drink_list & ["coffee", "espresso"]).size.positive? # !(...).empty? also works

¿Tu one? el código se comporta diferente de lo esperado porque score_list no es una matriz, sino un hash (diccionario/mapa en otros idiomas). Un hash consta de pares clave/valor que se pasan como matriz ( [key, value] ) al one? cuadra.

 score_list.one? { |pair| pair.last == perfect_score }

Alternativamente, puede usar la descomposición de matrices :

 score_list.one? { |key, value| value == perfect_score }

O recupere solo losvalues de antemano:

 score_list.values.one? { |score| score == perfect_score }
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!