2016-03-26 5 views
-1
def assign_rooms (array) 
    room_number = (1..7).to_a 
    attendees.map.each_with_index { |attendees, room_number| 
    "Hello, #{attendees}! You'll be assigned to room #{room_number}!" 
    } 
end 
+0

Willkommen bei Stack Overflow. Bitte lesen Sie "[fragen]" und "[mcve]". Wir brauchen eine Erklärung des Problems und Ihr beabsichtigtes Verhalten _in der Frage_. Außerdem ist es sehr wichtig, dass Sie Ihre Frage korrekt formatieren. Wenn Sie dies nicht tun, wird die Antwort verlangsamt und/oder entmutigt. Sehen Sie sich eine Stichprobe anderer SO-Fragen an und Sie werden den Stil herausfinden. Es gibt Hilfe in das Bearbeitungsfeld für die Eingabe von Text beim Erstellen Ihrer Frage. –

+1

Anstelle von map.each_with_index verwenden Sie map.with_index. –

Antwort

0

Try this:

def assign_rooms (attendees) 
    attendees.map.with_index do |attendee, room_number| 
    "Hello, #{attendee}! You'll be assigned to room #{room_number + 1 }!" 
    end 
end 

array = ['steve', 'john'] 
p assign_rooms(array) 

#=> ["Hello, steve! You'll be assigned to room 1!", "Hello, john! You'll be assigned to room 2!"] 

Hier führen wir ein neues Array abbildet und mit dem Indizes der array zu Mache die Zimmernummern. Da Zimmernummern im Allgemeinen nie 0 sind, fügen wir 1 zu jedem room_number hinzu.

2

Innerhalb Ihres each_with_index Blocks haben Sie den Wert index der lokalen Variablen room_number zugewiesen. Ich schätze, dass Sie so etwas wie dies tun wollen:

attendees.map.with_index { |attendee, index| "Hello, #{attendee}! 
    You'll be assigned to room #{room_number[index]}!" } 

Damit Sie werden passend auf jeden attendee auf den Wert von room_number das entspricht dem index Wert der Schleife.

Dies wird nicht gut funktionieren, wenn Sie mehr attendees als room_number s haben.

Verwandte Themen