まつもと ゆきひろです

In message "[ruby-list:10309] Re: 大規模プログラムの友 (Re: for  が修飾子だったら )"
    on 98/10/23, Takashi Nakai <nakai / m1.sys.to.casio.co.jp> writes:

|ど〜も、中井です。 /['o']

|	あと、ASSERTチェック内の条件式で副作用を与えない
|	はずって言う確証が...
|
|とここまで書いてきて、実行時にASSERTマクロ風の型チェックは可能
|かな?と思いました。

こんな感じのものはないよりはましでしょうか?

  class AssertError<StandardError
  end

  def assert
    if $DEBUG and not yield
      raise AssertError, "assertion failed at", caller(1)[0]
    end
  end

んで,使い方は

  def foo
    assert{a.kind_of? Integer}
    ...
  end

なんて風に使います.rubyに-dオプションを与えた時や,$DEBUGの
値を設定した時だけ有効になります.もっとも,副作用の抑制まで
は出来ませんが.

                                まつもと ゆきひろ /:|)