Ruby 1.8.7多行块

时间:2015-04-09 16:10:12

标签: ruby

所以我是Ruby的新手,我试图编写一个循环文件​​并执行if语句的多行块来获取文件中每个字符串的最后一个行号

i = 0

IO.foreach("testfile.log") {|line|
  if line.include? str1
    x = i
  elsif line.include? str2 and line.include? str3
    y = i
  end

  i++
}

当我尝试执行脚本时,我在块结束时收到以下错误:

错误语法错误,意外'}'

我在这里做错了什么?

2 个答案:

答案 0 :(得分:5)

i++无效Ruby。请改为i += 1

答案 1 :(得分:2)

如果你需要一个多行块

,这是一个糟糕的形式
i = 0
IO.foreach("testfile.log") do |line|
  if line.include? str1
    x = i
  elsif line.include? str2 and line.include? str3
    y = i
  end
  i+=1 # courtesy of Michael Kohl
end