(追記:事故解決しますた)
#!/usr/bin/env ruby file="hoge.txt" if File.exists? file then p "#{file} does not exist." else p "#{file} already exists." end
というコードを実行したとき
$ touch hoge.txt $ ./test.rb hoge.txt does not exist. $
となった。激しく直感に反するコードだなRuby。というか、調べた結果とも真逆なんだが何か問題が? まさか環境依存?
あれ、でも
p File.exists? "hoge.txt"
の結果はtrueだった。if文がおかしーとかそういうことが?! 謎だ。謎だ。もっと謎なのは
p file if File.exists? file
とかやるとちゃんと"hoge.txt"と表示されることだ。notを挟めばもちろん何も表示されない。手元にRuby本がないだけに疑問はちっとも解けない。
(追記)正しいコードはもちろん
-if File.exists? file then +if not File.exists? file then
ですね。全然直感に反してない。