我有一个遍历each
文本文件行的 Ruby 脚本。
在 Ruby 1.8.* 中使用content.each do |line|
工作正常,但在 Ruby 1.9.* 中不起作用,我需要使用content.each_line do |line|
.
由于这个脚本将被几个不同的人使用,我需要能够根据他们的 Ruby 版本使用正确的方法。
有没有办法做到这一点?
我有一个遍历each
文本文件行的 Ruby 脚本。
在 Ruby 1.8.* 中使用content.each do |line|
工作正常,但在 Ruby 1.9.* 中不起作用,我需要使用content.each_line do |line|
.
由于这个脚本将被几个不同的人使用,我需要能够根据他们的 Ruby 版本使用正确的方法。
有没有办法做到这一点?
全局常量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