Я на Глава 33 из Learn Ruby the Hard Way.
Дополнительное кредитное упражнение 1 спрашивает:
Преобразовать этот цикл while в функциючто вы можете вызвать и заменить 6 в тесте (я <6) с переменной. </p>
Код:
i = 0
numbers = []
while i < 6
puts "At the top i is #{i}"
numbers.push(i)
i = i + 1
puts "Numbers now: #{numbers}"
puts "At the bottom i is #{i}"
end
puts "The numbers: "
for num in numbers
puts num
end
Моя попытка:
i = 0
numbers = []
def loops
while i < 6
puts "At the top i is #{i}"
numbers.push(i)
i = i + 1
puts "Numbers now: #{numbers}"
puts "At the bottom i is #{i}"
end
end
loops
puts "The numbers: "
for num in numbers
puts num
end
Как видите, я дошел до того, что пытался превратить блок в функцию, пока не сделал 6 переменной.
Ошибка:
ex33.rb:5:in `loops': undefined local variable or method `i' for main:Object (Na
meError)
from ex33.rb:15:in `<main>'
from ex33.rb:15:in `<main>'
Что я делаю не так?
РЕДАКТИРОВАТЬ: Хорошо, немного улучшили.Теперь переменная чисел находится вне области видимости ...
def loops (i, second_number)
numbers = []
while i < second_number
puts "At the top i is #{i}"
i = i + 1
numbers.push(i)
puts "Numbers now: #{numbers}"
puts "At the bottom i is #{i}"
end
end
loops(0,6)
puts "The numbers: "
for num in numbers
puts num
end