Ruby &引用;“中断”;是否删除指定的变量?
我不明白为什么冠军一开始是赫敏,休息后冠军变成了零。。。 使用break有问题吗 这是我的密码:Ruby &引用;“中断”;是否删除指定的变量?,ruby,rspec,break,Ruby,Rspec,Break,我不明白为什么冠军一开始是赫敏,休息后冠军变成了零。。。 使用break有问题吗 这是我的密码: def pair(users_with_meeting, paired_users, ordered_keys,week) ordered_keys.each do |key| candidates = users_with_meeting[key] - paired_users unless candidates.empty? champi
def pair(users_with_meeting, paired_users, ordered_keys,week)
ordered_keys.each do |key|
candidates = users_with_meeting[key] - paired_users
unless candidates.empty?
champion = candidates.first
puts "ok"
puts champion.inspect.to_s
break
end
end
puts champion.inspect.to_s
if champion
meetings.create! week: week, paired_user: champion
champion.meetings.create! week: week, paired_user: self
else
[]
end
end
以下是我的终端中显示的内容:
Run options: include {:locations=>{"./spec/models/user_spec.rb"=>[117]}}
ok
#<User id: 1265, email: "Hermione.Granger@example.com", first_name: "Hermione", last_name: "Granger", uid: "Hermione.Granger@example.com", active: true, admin: false, created_at: "2013-09-15 18:09:16", updated_at: "2013-09-15 18:09:16", reset_date: "2013-04-22">
F
Failures:
1) test
Failure/Error: ginny.pair(User.with_meeting_for(week[1]), [], User.with_meeting_for(week[1]).keys.sort.reverse, week[2])
NameError:
undefined local variable or method `champion' for #<User:0x007f85189179f0>
# ./app/models/user.rb:64:in `pair'
# ./spec/models/user_spec.rb:133:in `block (2 levels) in <top (required)>'
运行选项:包括{:位置=>{./spec/models/user_spec.rb=>[117]}
好啊
#
F
失败:
1) 试验
失败/错误:ginny.pair(第[1]周有会议的用户,[],第[1]周有会议的用户。keys.sort.reverse,第[2]周)
名称错误:
未定义的局部变量或方法“champion”#
#./app/models/user.rb:64:in'pair'
#./spec/models/user_spec.rb:133:in'block(2层)in'
出现此错误是因为您在与传递到每个方法的块绑定的范围内定义了champion
局部变量。在此块之外,变量值变为nil
。为了避免这种情况,您可以在调用每个方法之前预定义变量,如下所示:
def pair(users_with_meeting, paired_users, ordered_keys,week)
champion = ''
ordered_keys.each do |key|
candidates = users_with_meeting[key] - paired_users
unless candidates.empty?
champion = candidates.first
puts "ok"
puts champion.inspect.to_s
break
end
end
puts champion.inspect.to_s
if champion
meetings.create! week: week, paired_user: champion
champion.meetings.create! week: week, paired_user: self
else
[]
end
end
问问自己:我的pair
函数在哪里结束?请粘贴pair
方法的整个代码。最好是正确缩进。放入champion.inspect.to_s
是不必要的尴尬,因为inspect
返回一个不需要转换的字符串,放入champion.inspect
与p champion
相同。