[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 のページ始めました)