めんどうくさくてRuby1.8.7から上げていないままのアプリがあって、ちょっと修正したら動かなくなった。

JavaScriptにホイスティングというのがあって〜〜という話を〓が前に言っていて、へぇ〜と思っていたらRubyでも似たのが発生していた

hoisting.rb

urls = ["http://shokai.org/blog", "https://shokai.github.com", "http://example.com"]
url = "hoge"

puts url

urls.delete_if{|url| url =~ /shokai/ }
p urls

puts url


各Rubyで実行した結果


1.8.7だけ、変数urlの中身が書き換わっている。


どうしょうもないので、何かイテレータにしか使わなそうな名前を使うとか、_urlみたいな変数名を使うとかしないとならない。
urls.delete_if{|i| i =~ /shokai/ }

4年ぐらいRuby使ってるけど始めて遭遇したと思う