Я работаю над заданием о расписании и у меня есть класс и файл .yml, где я хочу получить данные в виде «начальной» точки, «конечной» точки, «цены» и т. Д. И в моем классе у меня есть метод, в котором я хочу определить, соответствуют ли станции выбору пользователя:
class Train
require 'yaml'
def initialize(time)
@time = YAML.load_file(time)
end
def calc(begin:, end:)
ary = @time['time']
start = begin
stop = end
res = []
loop do
tmp = ary.find { |h| h['begin'] == start }
break unless tmp
res << tmp
start = tmp['end']
break if start == stop
end
end
end
Но это всегда дает сбой при условии
break unless tmp
Например, если записать переменную экземпляра
a = Train.new("my_path_to yml")
a.calc(begin: ':washington', end: ':tokyo')
Это ничего не выполняет. Даже если я произвожу рефакторинг блока цикла и напишу «для» итератора, он выдаст условие «еще»:
for i in ary
if i['begin'] == 'washington'
puts "good"
else
puts "no way"
end
end
Вот мой файл .yml
time:
-
begin: :washington
end: :briston
time: 6
price: 3
-
begin: :briston
end: :dallas
time: 4
price: 2
-
begin: :dallas
end: :tokyo
time: 3.5
price: 3
-
begin: :tokyo
end: :chicago
time: 3.5
price: 3
-
begin: :chicago
end: :dellawer
time: 3.5
price: 3
Заранее спасибо!