我有这个Ruby块:
status = ''
build.parse do |entry|
puts "parsing an item"
puts entry.title
if entry.title =~ /FAILURE/ then
puts "failure"
status = "FAILURE"
else
status = "SUCCESS"
end
puts status
break entry if status == "FAILURE"
end
由于某些未知的原因,我似乎无法摆脱它?我意识到这个块有点奇怪,它是从这里半复制的:
http://macruby.labs.oreilly.com/ch03.html#_xml_parsing
老实说,我的Ruby很差,但我正在尝试编写一个涉及RSS解析的小应用程序。
正则表达式匹配和状态设置为“FAILURE”但它不会突破块/循环。我做了一件明显不对的事吗?
干杯,
亚当
答案 0 :(得分:4)
你不需要if块中的'then'
@entries = ["this is a FAILURE", "this is a success"]
status = ''
@entries.each do |entry|
if entry =~ /FAILURE/
puts "failure"
status = "failure"
else
status = "success"
end
puts "status == #{status}"
break if status == "failure"
end
作为旁注,将其写成:
更为惯用status = @entries.any?{|e| e =~ /FAILURE/} ? 'failure' : 'succes'
当你处理可枚举的对象时,比如使用Ruby内置的工具很好。
答案 1 :(得分:1)
尝试break if status == "FAILURE"