require 'csv'
i = 0
CSV.foreach("survdata.csv", headers: true) do |row|
puts row
i++
if i > 1 then
break
end
end
这看起来很简单,但它并没有运行。你能明白为什么我会这样:
/mydev/surveyresult/surveyresult.rb:11: void value expression
答案 0 :(得分:1)
Ruby上次看的时候没有增量运算符。
取代
i++
做
i += 1
答案 1 :(得分:1)
Ruby不支持i++
语法作为i+=1
的快捷方式。见" Why doesn't Ruby support i++ or i-- (increment/decrement operators)?"了解更多信息。
您可以像这样修复代码:
require 'csv'
i = 0
CSV.foreach("survdata.csv", headers: true) do |row|
puts row
i = i+1
if i > 1 then
break
end
end
有关错误消息的更多信息(谢谢sawa):
Ruby实际上支持i++
语法。如果后跟x
,则会将其解释为应用于+
的一元运算符x
,其结果作为参数传递给i+
。在您的示例中,if i > 1 then; break; end
不返回任何值,因此错误消息" void value expression"。
答案 2 :(得分:0)
是。这是因为:
if i > 1 then
break
end
部分中断,没有返回值(在相关代码块中)。并且您不能将一元运算符+@
应用于缺少值的事物,也不能i.+
获取诸如参数的返回值。