У меня есть готовая программа, но теперь мне нужно преобразовать цикл #Each в цикл #While.Цикл должен выводить почти ту же информацию, но вместо этого он выдает «directory.rb: 24: в« print »: неявное преобразование Symbol в Integer (TypeError)».
def input_students
puts "Please enter the names of the students"
puts "To finish, just hit return twice"
students = []
name = gets.chomp
while !name.empty? do
students << {name: name, cohort: :november}
puts "Now we have #{students.count} students"
name = gets.chomp
end
students
end
students = input_students
def print_header
puts "The students of Villains Academy"
puts "----------"
end
def print(students)
students.each.with_index(1) do |students, index|
puts "#{index} #{students[:name]}, #{students[:cohort]} cohort"
end
end
def print_footer(names)
puts "Overall we have #{names.count} great students"
end
print_header
print(students)
print_footer(students)
Работает какожидается.Я пытаюсь:
def print(students)
i = 0
while i < students.length
puts "#{students[:name]}, #{students[:cohort]} cohort"
end
end
Почему цикл #While не работает с аналогичным вводом и почему он пытается преобразовать в целое число?