[#1562] Re: rbdj1227.lzh —
わたなべです.
[#1582] [BUG] Regexp — sinara@...
原です。あけましておめでとうございます。
まつもと ゆきひろです
原です。
まつもと ゆきひろです.
[#1583] jchop — WATANABE Hirofumi <watanabe@...>
わたなべです. おめでとう.
[#1614] [tk] Cannot execute some samples — Eiji-usagi-MATSUmoto <ematsu@...>
まつもと@ぴーえふゆーと申します。はじめまして。
[#1625] matz has back! — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
[#1639] Script for making Index of Ruby Manual — s.suda@...
須田です。
[#1655] [Q] Use of '==', 'eql?' and 'hash' — sinara@...
原です。
[#1667] [Q] Use of Thread and Mutex — sinara@...
原です。
まつもと ゆきひろです.
原です。
原です。
[#1670] [Q] Timeout in Socket (Re: [Q] Use of Thread and Mutex) — sinara@...
原です。
まつもと ゆきひろです.
[#1677] ruby-1.0-970110 available — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです.
[#1682] 組み込みクラスのメソッド .htm — (Dezawa Shin-ichiro) <dezawa@...>
出沢です
[#1688] Ruby 1.0-970110 on NeXTSTEP — SHIROYAMA Takayuki <psi@...>
[#1705] 正規表現 単独の ? — Sinichiro Dezawa <dezawa@...>
出沢です
まつもと ゆきひろです
matz> rubyの使っているGNUの正規表現ルーチンのデフォルトではパター
わたなべです.
まつもと ゆきひろです.
[#1720] ruby 1.0-970116 available — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです.
[#1723] in-place edit on djgpp/win32 — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです.
[#1753] Usage of Menu — Noritugu Nakamura <nnakamur@...>
[#1762] ruby 1.0-970118 available — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
[#1771] rectangle of canvas widget — Noritugu Nakamura <nnakamur@...>
原です。
まつもと ゆきひろです
原です。
まつもと ゆきひろです.
原です。
[#1788] Text of TkCanvas — Noritugu Nakamura <nnakamur@...>
まつもと ゆきひろです.
まつもと ゆきひろです.
まつもと ゆきひろです.
わたなべです.
[#1794] Filetest error on Ruby-DJ — s.suda@...
須田です。
[#1833] GD.c revised — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
[#1865] ruby-1.0-960124 available — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
わたなべです.
まつもと ゆきひろです.
わたなべです.
まつもと ゆきひろです.
まつもと@ぴーえふゆーです。
まつもと ゆきひろです.
まつもと@ぴーえふゆーです。
まつもと ゆきひろです.
まつもと@ぴーえふゆーです。
[#1871] None — (Dezawa Shin-ichiro) <dezawa@...>
でざわです
[#1875] toplevel of Tk — Noritugu Nakamura <nnakamur@...>
[#1899] [Dist] Mutex — keiju@... (Keiju ISHITSUKA)
けいじゅ@SHLジャパンです.
[#1926] [Dist] Mutex module — keiju@... (Keiju ISHITSUKA)
けいじゅ@SHLジャパンです.
まつもと ゆきひろです.
けいじゅ@SHLジャパンです.
まつもと ゆきひろです.
原です。
まつもと ゆきひろです.
けいじゅ@SHLジャパンです.
けいじゅ@SHLジャパンです.
まつもと ゆきひろです.
けいじゅ@SHLジャパンです.
まつもと ゆきひろです.
原です。
まつもと ゆきひろです.
けいじゅ@SHLジャパンです.
原です。
けいじゅ@SHLジャパンです.
まつもと ゆきひろです.
原です。
まつもと ゆきひろです.
原です。
まつもと ゆきひろです.
原です。
まつもと ゆきひろです.
原です。
まつもと ゆきひろです.
原です。
出沢です
まつもと ゆきひろです.
原です。
[#1953] open (file descriptor) — j_kuro@... (Jun Kuroda)
黒田です.
まつもと ゆきひろです.
黒田です.
原です。
まつもと ゆきひろです.
[ruby-list:1840] Re: command option of Tk
まつもと ゆきひろです.
In message "[ruby-list:1835] command option of Tk"
on 97/01/23, Noritugu Nakamura <nnakamur@tamaru.kuee.kyoto-u.ac.jp> writes:
|中村です。
うーん,中村さん,いつ寝てるんですか? ゆうべ徹夜しちゃった
んでしょうか? 体壊さないでくださいね.
|とりあえず、こういうのを書きましたが
|どちらのボタンを押しても 2 しか出ません。
|
|#!/usr/local/bin/ruby
|
|require "tk"
|
|for i in 1..2
| text = "button" + i
| TkButton.new {
| text text
| command proc {
| print i, "\n"
| STDOUT.flush
| }
| pack
| }
|end
|
|Tk.mainloop
以下のように書き換えてください.
for i in 1..2
text = "button" + i
TkButton.new {
text text
j = i # ここが大事
command proc {
print j, "\n" # iでなくjをつかう
STDOUT.flush
}
pack
}
end
この点はちょっと難しいので説明しましょう.
つまりtclでは文字列はその場で展開されてしまうため,-command
で指定した$iの値はその時点の$iの値です.ところがrubyでは評価
は必ず実行時(ボタンが押された時)ですから,その時点のiの値(ルー
プの実行が終って2になっている)が表示されます.tclでいうと
"puts $i"でなく{puts $i}を指定した感じでしょうか.
望ましい処理はcommandを指定した時点でのiの値を保存しておくこ
とです.こういう時に動的変数を使います.動的変数(イテレータ
ブロックの中で最初に宣言された変数)はそのイテレータブロック
の範囲内だけがスコープになります.つまりループの1回目の実行
と2回目の実行で,iは同じもの(値も共有する)ですが,jは一度ス
コープを抜けて再度生成されたもので別々の値を持ちます.
Procが絡まない時には動的変数かどうかはほとんど違いがないので
すが,Procが関係すると(Procはそのスコープでの変数の値を保存
するので)結構ややこしくなります.難しければ,また質問してく
ださい.
まつもと ゆきひろ /:|)