いがらしです。

「[ruby-list:15712] Re: signal_connect の引数 ??」で 、
matz / netlab.co.jp (Yukihiro Matsumoto)さんは書きました:

> まつもと ゆきひろです
> 
> In message "[ruby-list:15711] signal_connect の引数 ??"
>     on 99/07/29, kkubota / 18software.co.jp <kkubota / 18software.co.jp> writes:
> 
> |ruby/gtkでプログラムを作成していますが、signal_connect
> |の引数が何を意味しているのかが分かりません。
> |例えば
> |  btn = Gtk::Button.new('Test')
> |  btn.signal_connect("clicked", xxxx) do | btnobj, yyyy |
> |      print "button clicked\n"
> |  end
> |
> |では、btnobj がクリックされたボタンオブジェクトそのものを指して
> |いるとおもいますが、yyyy は何を指しますか?
> 
> xxxxの値そのものです。複数指定すれば複数渡ります。Rubyはブロッ
> クで外側の変数が使えますからこれが必要なることはめったにない
> と思いますけどね。

たいていはそうなのですが、signal_connectを呼んだ後にその
ブロック外のローカル変数の値が変ってしまうとまずいので、
signal_connectの引数として渡しておけば安心かも知れません。

気をつければいいだけの話なのですが、
以前私はこれではまったことがあるので。

> |また、ruby/gtk のウィジットクラスなどのソースは何処にありますか?
> 
> 五十嵐さんのところにあります。
> 
>   http://www.ueda.info.waseda.ac.jp/~igarashi/ruby/ruby-gtk-0.20pre.tar.gz
> 
> のあたり。

http://www.ueda.info.waseda.ac.jp/~igarashi/ruby/gtk-ja.html 
からたどれますが、最新版は環境によってコンパイルできないかも
知れませんのでご注意を。

各ウィジェットのソースプログラムは、
Ruby/GTKのアーカイブの中の src/rbgtk*.c です。

----
五十嵐  宏  (Hiroshi IGARASHI)