永井@知能.九工大です. >>>>> "M" == Yukihiro Matsumoto <matz / netlab.co.jp> writes: M> In message "[ruby-list:8476] Re: tk demo (timer) & after" M> on 98/06/23, NAGAI Hidetoshi <nagai / dumbo.ai.kyutech.ac.jp> writes: M> |少なくとも単なる sleep がわりに Tk.after 100 とするような用途は M> |残るはずです. M> なるほどねえ.でも,この場合なら素直にsleep使った方が良さそ M> うかな.^^;;; いえ,Tcl/Tk の after で止める場合は, Tk のイベント処理を禁止しますから, 単なる sleep とはちょっと違うと思います. M> |def after(ms, cmd=Proc.new{}) のように修正しないといけないのかな? M> いや,これではまずいです.こういう場合はブロック引数(&block) M> で受け取るとかiterator?を使うかして場合分けしないといけない M> でしょう. え? これは Proc.new の問題ですよね? proc を受け取る引数のデフォルト値で単に Proc.new としているけれども ブロックを渡さない Proc.new ではエラーになるため, after の例では引数 cmd が省略可能ではないということなのですが... # Proc は組み込みクラスですから, # 「iterator? を使う」とかの問題ではないですよね? それはともかく,cmd 引数を取らない場合に対応するなら, def after(ms, cmd=nil) などとしておいて,if cmd で 条件分けをすべきなのでしょうね. -- 永井 秀利 (九工大 知能情報) nagai / ai.kyutech.ac.jp