[#26664] refactoring tcltklib.c (deleted ip check) — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>

山本です。

22 messages 2005/08/01
[#26665] Re: refactoring tcltklib.c (deleted ip check) — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/08/01

山本です。

[#26668] Re: refactoring tcltklib.c (deleted ip check) — Hidetoshi NAGAI <nagai@...> 2005/08/01

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

[#26678] Re: refactoring tcltklib.c (deleted ip check) — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/08/01

山本です。

[#26684] Re: refactoring tcltklib.c (deleted ip check) — Hidetoshi NAGAI <nagai@...> 2005/08/01

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

[#26686] Re: refactoring tcltklib.c (deleted ip check) — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/08/01

山本です。

[#26817] test/socket/test_tcp.rb freeze on windows — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>

山本です。

12 messages 2005/08/18

[#26829] cannot check EOF of pipe on windows — "U.Nakamura" <usa@...>

こんにちは、なかむら(う)です。

19 messages 2005/08/19
[#26830] Re: cannot check EOF of pipe on windows — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/08/19

山本です。

[#26831] Re: cannot check EOF of pipe on windows — "U.Nakamura" <usa@...> 2005/08/19

こんにちは、なかむら(う)です。

[#26832] Re: cannot check EOF of pipe on windows — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/08/19

山本です。

[#26836] Re: cannot check EOF of pipe on windows — nobuyoshi nakada <nobuyoshi.nakada@...> 2005/08/19

なかだです。

[#26872] irb -I/ruby -Iと$LOAD_PATH — akira yamada / やまだあきら <akira@...>

Debianユーザからruby -Iとirb -Iで

17 messages 2005/08/24
[#26873] Re: irb -I/ruby -Iと$LOAD_PATH — nobuyoshi nakada <nobuyoshi.nakada@...> 2005/08/24

なかだです。

[#26875] Re: irb -I/ruby -Iと$LOAD_PATH — akira yamada / やまだあきら <akira@...> 2005/08/24

nobuyoshi nakada wrote:

[#26885] Re: irb -I/ruby -Iと$LOAD_PATH — keiju@... (石塚圭樹) 2005/08/26

けいじゅ@いしつかです.

[#26897] fail on make install — KIMURA Koichi <kimura.koichi@...>

木村です。

28 messages 2005/08/29
[#26898] Re: fail on make install — "U.Nakamura" <usa@...> 2005/08/29

こんにちは、なかむら(う)です。

[#26903] Re: fail on make install — KIMURA Koichi <kbk@...> 2005/08/29

木村です。

[#26922] Re: fail on make install — KIMURA Koichi <kimura.koichi@...> 2005/08/30

木村です。

[#26926] Re: fail on make install — KIMURA Koichi <kimura.koichi@...> 2005/08/31

木村です。

[#26927] Re: fail on make install — "U.Nakamura" <usa@...> 2005/08/31

こんにちは、なかむら(う)です。

[#26928] Re: fail on make install — KIMURA Koichi <kimura.koichi@...> 2005/08/31

木村です。

[#26929] Re: fail on make install — "U.Nakamura" <usa@...> 2005/08/31

こんにちは、なかむら(う)です。

[#26930] Re: fail on make install — nobuyoshi nakada <nobuyoshi.nakada@...> 2005/08/31

なかだです。

[#26931] Re: fail on make install — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/08/31

山本です。

[#26933] Re: fail on make install — nobu@... 2005/08/31

なかだです。

[#26938] Re: fail on make install — nobuyoshi nakada <nobuyoshi.nakada@...> 2005/09/01

なかだです。

[#26939] Re: fail on make install — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/09/01

山本です。

[#26900] multiplying empty string — nobuyoshi nakada <nobuyoshi.nakada@...>

19 messages 2005/08/29
[#26904] Re: multiplying empty string — Yukihiro Matsumoto <matz@...> 2005/08/29

まつもと ゆきひろです

[#26907] Re: multiplying empty string — Tanaka Akira <akr@...17n.org> 2005/08/29

In article <1125327516.070646.12845.nullmailer@x31.priv.netlab.jp>,

[#26909] Re: multiplying empty string — Yukihiro Matsumoto <matz@...> 2005/08/29

まつもと ゆきひろです

[ruby-dev:26747] Re: TkCheckbutton#variable as getter?

From: Hidetoshi NAGAI <nagai@...>
Date: 2005-08-05 04:08:05 UTC
List: ruby-dev #26747
永井@知能.九工大です.

From: H.Yamamoto <ocean@m2.ccsnet.ne.jp>
Subject: [ruby-dev:26745] TkCheckbutton#variable as getter?
Date: Fri, 5 Aug 2005 10:46:50 +0900
Message-ID: <20050805104649.401D04D0.ocean@m2.ccsnet.ne.jp>
> tile/demo.rb を書いているときに引っかかったのですが、
> TkCheckbutton などから variable を取得する簡便な方法が
> ないようです。下のようにしたかったのですが、どうも TkCheckbutton#variable は
> setter としてだけ働いているようで、引数の数があわないというエラーになりました。

確かに TkCheckbutton#variable は getter としては使えなくなってて,
TkCheckbutton#[] あたりを使わざるをえなくなってますね.
末尾に添えたパッチで OK だと思います.
tk_trace_variable() は現在ではダミー化してますので,
この variable() の定義自体を消してしまうというのでもいいのですが,
互換性のための念には念をの安全策で残すようにしてます.
variable= をわざわざ定義して,variable(v) を呼ぶようにしているのも
そのためです.

From: H.Yamamoto <ocean@m2.ccsnet.ne.jp>
Subject: [ruby-dev:26746] Re: TkCheckbutton#variable as getter?
Date: Fri, 5 Aug 2005 11:24:25 +0900
Message-ID: <20050805112424.347ADFE0.ocean@m2.ccsnet.ne.jp>
> 一応 TkRadiobutton の定義されているファイルは見たのですが、def variant(hoge) という
> ものだけが定義されているのに c1.variable = (代入)は動いていたりとよくわからなかった
> ので、パッチは作りませんでした。

この辺りは method_missing の機構を使ってます.
呼ばれた method が存在しない場合,ウィジェット属性の操作要求
であるとみなして処理します.つまり,

 (1) hoge=(v) : 属性 hoge の値を v に設定 (configure('hoge', v))
                Ruby 自体の仕組みにより v が返る.

 (2) hoge(v)  : 属性 hoge の値を v に設定 (configure('hoge', v))
                self を返す.
  
 (3) hoge     : 属性 hoge の値を参照.

というわけです.
今回のケースでは variable が定義されていたために
(2), (3) ではその定義された variable() を呼び出し,
variable= は定義されていなかったために (1) の仕組みで
属性設定が行われていたということになります.

Index: ext/tk/lib/tk/radiobutton.rb
===================================================================
RCS file: /var/cvs/src/ruby/ext/tk/lib/tk/radiobutton.rb,v
retrieving revision 1.1.2.4
diff -u -r1.1.2.4 radiobutton.rb
--- ext/tk/lib/tk/radiobutton.rb	8 Dec 2004 18:13:37 -0000	1.1.2.4
+++ ext/tk/lib/tk/radiobutton.rb	5 Aug 2005 03:56:13 -0000
@@ -25,8 +25,16 @@
     tk_send_without_enc('select')
     self
   end
-  def variable(v)
-    configure 'variable', tk_trace_variable(v)
+
+  def variable(v = nil)
+    if v
+      configure 'variable', tk_trace_variable(v)
+    else
+      cget('variable')
+    end
+  end
+  def variable=(v)
+    variable(v)
   end
 
   def get_value

-- 
                                       永井 秀利 (九工大 知能情報)
                                           nagai@ai.kyutech.ac.jp

In This Thread