[#47364] nokogiri-1.4.3.1のBus Errorについて — Tomohiko Hayashi <hayashi-t@...>
こんにちは!
6 messages
2010/09/04
[#47369] cgiのパラメータについて — nonta <nonta@...>
野田と申します。
9 messages
2010/09/06
[#47391] ruby-1.9.2 で Net::Telnet の close ができない — HAMANO Kiyoto <kiyoto@...>
濱野と申します。
9 messages
2010/09/10
[#47392] Re: ruby-1.9.2 で Net::Telnet の close ができない
— Kazuhiro NISHIYAMA <zn@...>
2010/09/10
西山和広です。
[#47404] Re: ruby-1.9.2 で Net::Telnet の close ができない
— HAMANO Kiyoto <kiyoto@...>
2010/09/13
西山さん、
[#47408] Re: ruby-1.9.2 で Net::Telnet の close ができない
— Kazuhiro NISHIYAMA <zn@...>
2010/09/15
西山和広です。
[#47396] Rubytterとスレッドについて — "Jun'ya Shimoda" <jun-shimo@...>
下田と申します。
5 messages
2010/09/11
[#47413] undefined symbol: rb_eThreadErrorについて — Shusaku Yokota <blueberrycandle@...>
はじめまして、†しゅう†といいます。
8 messages
2010/09/16
[#47421] Re: undefined symbol: rb_eThreadErrorについて
— Tsutomu Kotake <t-kotake@...>
2010/09/17
こたけと申します。
[#47414] <=>の意味は? — "T.Soejima" <clev@...2.so-net.ne.jp>
そえじま@勉強中です。
37 messages
2010/09/17
[#47420] Re: <=>の意味は?
— 藤川浩明 <fhir0aki3@...>
2010/09/17
他の方がすでに解答されているみたいですが、一応僕なりの答えを書いてみます。僕もRuby初心者なのではっきりとは言えないんですが・・・。
[#47422] Re: <=>の意味は?
— "T.Soejima" <clev@...2.so-net.ne.jp>
2010/09/17
そえじま@勉強中です。
[#47424] Re: <=>の意味は?
— "Y. NOBUOKA" <nobuoka@...>
2010/09/17
信岡です。
[#47426] Re: <=>の意味は?
— "T.Soejima" <clev@...2.so-net.ne.jp>
2010/09/17
そえじま@勉強中です。
[#47428] Re: <=>の意味は?
— "Y. NOBUOKA" <nobuoka@...>
2010/09/17
そえじまさん
[#47429] Re: <=>の意味は?
— "T.Soejima" <clev@...2.so-net.ne.jp>
2010/09/17
そえじま@勉強中です。
[#47433] Re: <=>の意味は?
— 藤川浩明 <fhir0aki3@...>
2010/09/18
色々返答したいと思いましたが、時間が無いので「OOPの何がいいのか、いまいち分かっておりません。」の部分にのみ解答させていただきます。
[#47435] Re: <=>の意味は?
— "T.Soejima" <clev@...2.so-net.ne.jp>
2010/09/18
そえじま@勉強中です。
[#47438] Re: <=>の意味は?
— masayoshi takahashi <maki@...>
2010/09/18
高橋征義です。『たのしいRuby』の著者の片割れの方から来ました。
[#47441] Re: <=>の意味は?
— "T.Soejima" <clev@...2.so-net.ne.jp>
2010/09/18
そえじま@勉強中です。
[#47444] Re: <=>の意味は?
— arton <artonx@...>
2010/09/18
artonです。
[#47498] Bignumの変換のタイミングについて — "Jun'ya Shimoda" <jun-shimo@...>
下田と申します。お世話になっております。
5 messages
2010/09/30
[ruby-list:47455] Re: 変数の変更を監視するには?
From:
masa <masap.hat@...>
Date:
2010-09-19 13:29:47 UTC
List:
ruby-list #47455
きしもとさん、出沢さん、Takahashiさん
お返事ありがとうございました!
グローバル変数ならば(きしもとさんがいわれたように)
trace_var でフックできるというのが(調べて)わかりました。
また、通常メソッドならば p を入れれば呼び出されたのは
すぐわかりますし、アクセッサでも
alias_method :old_var, :var
def var
p "fuck1"
old_var
end
def var=(arg)
p "fuck2"
@var=arg
end
とかなんとかすればフックできたのですが、
インスタンス変数の変更はどうしたら検知できるか
と考えていました。
set_trace_func proc
感動しました。
でもこちらでもちょっと別の例で試してみたのですが、
ちょっと奇妙?な結果が出ました。
1 class TEST
2 def get_var
3 @var
4 end
5 def set_var
6 @var = 100
7 end
8 end
9
10 old_v = Object.new # `==' 的にユニークな値
11 set_trace_func proc {|event, file, line, id, binding, klass, *rest|
12 if event == 'line' || event == 'return'
13 begin
14 v = eval('@var', binding)
15 puts "#{file}:#{line}: @var=#{v.inspect}" if old_v != (old_v = v)
16 rescue NameError
17 end
18 end
19 }
20
21 test = TEST.new
22 test.set_var
23 test.get_var
これを実行したら以下のようになりました。
$ ruby test.rb
test.rb:21: @var=nil
test.rb:6: @var=100
test.rb:23: @var=nil
test.rb:3: @var=100
ちなみに
$ ruby -v
ruby 1.8.7 (2010-01-10 patchlevel 249) [i686-darwin9]
です。
あれ?と思ったのは 23 行目で
test.rb:23: @var=nil
となっているところです。
ただ参照されている場合も出力されていて、おぉすばらしい、
ともはじめは思ったのですが、よく考えてみると、
一度 @var = 100 と設定されたのにまた nil になっているのは
直感的には理解できません。set_trace_func (proc_trace) や
binding の仕組みを自分が良く理解できていないせいだとは
思うのですが。
とにかく、この枠組みを使って月曜日にソースコードを調べて
見ようと思います。ありがとうございました。
masa