4

我有一个遍历each文本文件行的 Ruby 脚本。

在 Ruby 1.8.* 中使用content.each do |line|工作正常,但在 Ruby 1.9.* 中不起作用,我需要使用content.each_line do |line|.

由于这个脚本将被几个不同的人使用,我需要能够根据他们的 Ruby 版本使用正确的方法。

有没有办法做到这一点?

4

1 回答 1

4

全局常量RUBY_VERSION包含当前运行的 Ruby 的版本。所以这个脚本会做你想做的事:

if RUBY_VERSION < "1.9.2"
  # code for 1.8.7
else
  # code for 1.9.2+
end

如果 的内码each_line等于1.8.*and 1.9.*,则以下方法更 DRY:

each_selector = RUBY_VERSION < "1.9.2" ? :each : :each_line
content.send(each_selector) do | line|
   # ...
end
于 2013-05-03T14:50:35.413 回答