each
テキスト ファイルの行を反復処理する Ruby スクリプトがあります。
Ruby 1.8.* では usingcontent.each do |line|
は正常に動作しますが、Ruby 1.9.* では動作せず、content.each_line do |line|
.
このスクリプトは複数の人が使用するため、Ruby のバージョンに応じて適切な方法を使用できるようにする必要があります。
これを行う方法はありますか?
each
テキスト ファイルの行を反復処理する Ruby スクリプトがあります。
Ruby 1.8.* では usingcontent.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
と等しい場合、次のアプローチはより DRY です。1.8.*
1.9.*
each_selector = RUBY_VERSION < "1.9.2" ? :each : :each_line
content.send(each_selector) do | line|
# ...
end