2016-02-07 2 views
-1

Я делаю проект, в котором конечный результат должен иметь главный список из двух массивов, созданных различными методами (batch_badge_creator и assign_rooms).Итерация по двум массивам одновременно в Ruby

Моя проблема связана с последней секцией, способом принтера. Мне нужно выводить оба метода на экран и распечатывать каждый элемент массива для каждого массива отдельно.

Как я могу выполнять итерацию по массиву заданий комнаты, чтобы выделять каждое отдельное задание?

Благодарим за помощь!

def badge_maker(name) 
"Hello, my name is #{name}." 
end 

attendees = ["Edsger", "Ada", "Charles", "Alan", "Grace", "Linus", "Matz"] 

def batch_badge_creator(attendees) 
    attendees.each {|x| badge_maker(x)} 
    return badges 
end 

def assign_rooms(room) 
    room = [1, 2, 3, 4, 5, 6, 7] 
    attendees.each_with_index {|x, index| "Hello #{attendees}! You will be assigned to room #{room}!"} 
    return room_assignments 
end 

def printer(attendees) 
    assign_rooms.each {|x| puts batch_badge_creator(assign_rooms)} 
    puts badges_and_room_assignments 
end 

мне нужен принтер, чтобы поставить это:

Hello, my name is Edsger. 
Hello, my name is Ada. 
Hello, my name is Charles. 
Hello, my name is Alan. 
Hello, my name is Grace. 
Hello, my name is Linus. 
Hello, my name is Matz. 
Hello, Edsger! You'll be assigned to room 1! 
Hello, Ada! You'll be assigned to room 2! 
Hello, Charles! You'll be assigned to room 3! 
Hello, Alan! You'll be assigned to room 4! 
Hello, Grace! You'll be assigned to room 5! 
Hello, Linus! You'll be assigned to room 6! 
Hello, Matz! You'll be assigned to room 7! 
+0

Можете ли вы привести пример конечного результата, который вы хотите? –

+0

@ Jordan thanks, я узнал о '' из вашего редактирования, используемом для улучшения форматирования SO в моем ответе ниже. –

ответ

1

Хорошо, я сделал некоторые улучшения, но я думаю, что это то, что вы после этого. Обратите особое внимание на переменные, начинающиеся с @. Это переменные экземпляра, которые вкратце позволяют себе быть замеченными другими методами в пределах одного класса. Я также поместил все в класс и только некоторое общее уборка и добавил несколько новых бит. Надеюсь, это полезно.

class HotelEvent 

    def badge_maker(name) 
    "Hello, my name is #{name}." 
    end 

    def attendees 
    @attendees = ["Edsger", "Ada", "Charles", "Alan", "Grace", "Linus", "Matz"] 
    end 

    def batch_badge_creator 
    @badges = @attendees.map {|x| badge_maker(x)} 
    end 

    def assign_rooms 
    @room_assignments = @attendees.map.with_index {|attendee, room| "Hello #{attendee}! You will be assigned to room #{room+1}!"} 
    end 

    def print_badges 
    @badges.each {|b| puts b} 
    end 

    def print_room_numbers 
    @room_assignments.each {|r| puts r} 
    end 

    def print_all 
    print_badges 
    print_room_numbers 
    end 

end 

new_event = HotelEvent.new 
new_event.attendees 
new_event.batch_badge_creator 
new_event.assign_rooms 
new_event.print_all 

Выход будет:

Hello, my name is Edsger. 
Hello, my name is Ada. 
Hello, my name is Charles. 
Hello, my name is Alan. 
Hello, my name is Grace. 
Hello, my name is Linus. 
Hello, my name is Matz. 
Hello Edsger! You will be assigned to room 1! 
Hello Ada! You will be assigned to room 2! 
Hello Charles! You will be assigned to room 3! 
Hello Alan! You will be assigned to room 4! 
Hello Grace! You will be assigned to room 5! 
Hello Linus! You will be assigned to room 6! 
Hello Matz! You will be assigned to room 7! 

Просто редактировать и изменять по вашему вкусу! И имейте в виду, что код может быть значительно улучшен. Например, добавив некоторые методы setter, но я оставлю это для вас как упражнение. Удачи.

+0

Большое вам спасибо за помощь и время! Это выглядит великолепно. Мне нравится, как вы его модифицировали. –

+0

@LadyD. Рад помочь. Еще один совет, подумайте об использовании метода 'initialize' в вашем классе. Посмотрите онлайн, чтобы узнать, что он делает. Кроме того, если вы нашли, что мой ответ или любой другой ответ будут особенно полезными, пожалуйста, подумайте о принятии, щелкнув соответствующий серый тик, чтобы он стал зеленым. И как часть сообщества SO, вы также должны сделать это по всем остальным вопросам :) –

Смежные вопросы