[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[mhc:01871] Re: mhc2ol on Ruby 1.8
>>>>> [mhc : No.01865] にて
>>>>> "三好" = 私は書きました:
まつもと> |;; ruby-1.8 では、nil != nil がエラーになってしまうようですね。
まつもと> え、これはエラーになってはいけないように思います。どんなエラー
まつもと> か教えていただけませんか。
三好> 失礼しました。これはウソでした。
三好> mhc のライブラリ側に問題があるようです。
三好> もう少し調べてから詳細を報告します。
原因が分かりました。
以下を実行したときに、ruby のバージョンによって結果が異なるようで
す。
・ruby 1.6.7 では(B)を通過しエラーは起きない
・ruby 1.8.0 では(A)でエラーになる
エラーメッセージは下記です。
> test.rb:9:in `<=>': undefined method `days' for nil:NilClass (NoMethodError)
今まで、ruby 1.6.7 でエラーにならなかった理由がよく分からないので
すが、MhcDate を使う側が、`<=>' を不必要に呼び出さないようにして
対処しました。
-------------------------------------------------
class MhcDate
include Comparable
def days
return 1
end
def <=>(other)
return days <=> other.days
end
end
date = MhcDate.new
if date != nil # (A) 1.8.0 でエラー発生
print "date is NOT nil\n" # (B) 1.6.7 ではここを通過
else
print "date is nil\n"
end
-------------------------------------------------
--
三好 雅則 mailto:miyoshi@xxxxxxxxxxxxxxxx
http://www.boreas.dti.ne.jp/~miyoshi/ (Meadow2 のページ始めました)