永井@知能.九工大です.

>>>>> "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