けいじゅ@日本ラショナルソフトウェアです.

In [ruby-list :07084 ] the message: "[ruby-list:7084] Re: about rbc ",
on Mar/11 14:07(JST) Keiju ISHITSUKA writes:

>>  rbc について二つ質問があります.
>>
>>  1. ~/.irbrc に `trace_load false' の一行だけを書いているのですが, こ
>>     れが効いていません. 具体的には

>とりあえず. 
>
>BC_APPLICATION__::CONFIG[:TRACE_LOAD] = false
>
>と設定して下さい.

これは対処できました.

~/.irbrcに

  trace_load false

でいけるようになりました. ただし, デフォルトで 

  trace_load true 

になっているのも迷惑でしょうから. デフォルトを

  trace_load false

に変更しました.

>>  2. rbc のなかで `_' に代入すると前の演算結果を保持するという `_' の
>>     機能が失われます.
>>
>>      rbc0> _ = 10
>>      10
>>      rbc0> _
>>      10
>>      rbc0> 1+1
>>      2
>>      rbc0> _
>>      10

>うーん. おかしいな... ちゃんと対応してあるはずなんですが... 調べてみ
>ます.

原因が分かりました.

_は関数でインスタンス変数@_を返す関数で, 別に_=(value)が@_に登録する関
数だったのですが,

>>      rbc0> _ = 10
>>      10

を行なった時点で, ローカル変数_が登録されてしまい. 以後, 変数と関数の
優先度の違いで常にローカル変数が使われるようになってしまっていたのが原
因でした.

インスタンス変数@_を使わなず, ローカル変数_を使う様に変更しましたので, 
この問題も解決したと思います.

あと, もう1つ仕様を変更しました.

以前はinspect(sw)でインスペクトモードをとぐるしていましたが, それだと, 
selfをインスペクトできなくなるので, inspect_mode(sw)という名前に変更し
ました.

以下がパッチです.
--
5,6c5,6
< #   	$Revision: 1.7 $
< #   	$Date: 1998/02/27 03:45:51 $
---
> #   	$Revision: 1.8 $
> #   	$Date: 1998/03/11 05:43:00 $
26c26
< #   inspect(sw = nil)	    インスペクトモードのトグル
---
> #   inspect_mode(sw = nil)  インスペクトモードのトグル
36c36
<   RCS_ID='-$Id: rbc.rb,v 1.7 1998/02/27 03:45:51 keiju Exp $-'
---
>   RCS_ID='-$Id: rbc.rb,v 1.8 1998/03/11 05:43:00 keiju Exp keiju $-'
46c46
<   CONFIG[:TRACE_LOAD] = TRUE
---
>   CONFIG[:TRACE_LOAD] = FALSE
834c834,835
<       @_ = value
---
>       CONFIG[:_] = value
>       eval "_=BC_APPLICATION__::CONFIG[:_]", CONFIG[:BIND]
837,839c838,840
<     def _
<       @_
<     end
---
> #    def _
> #      eval "_", CONFIG[:BIND]
> #    end
846,847c847,848
<       if opt
< 	@Trace_require = opt
---
>       if !opt.nil?
> 	CONFIG[:TRACE_LOAD] = opt
849c850
< 	@Trace_require = !@Trace_require
---
> 	CONFIG[:TRACE_LOAD] = !CONFIG[:TRACE_LOAD]
851,852c852,853
<       print "Switch to load/require #{unless @Trace_require; ' non';end} trace mode.\n"
<       if @Trace_require
---
>       print "Switch to load/require #{unless CONFIG[:TRACE_LOAD]; ' non';end} trace mode.\n"
>       if CONFIG[:TRACE_LOAD]
867c868
<       @Trace_require
---
>       CONFIG[:TRACE_LOAD]
914c915
<     def inspect(opt = nil)
---
>     def inspect_mode(opt = nil)


__
................................石塚 圭樹@日本ラショナルソフトェア...
----------------------------------->> e-mail: keiju / rational.com <<---