[#50] Re: [ruby-list:3596] Module#attr specification (Re: boolean values) — keiju@... (石塚圭樹 )

けいじゅ@日本ラショナルです.

11 messages 1997/08/05

[#121] Re: meta programming features — keiju@... (石塚圭樹 )

けいじゅ@日本ラショナルです.

18 messages 1997/08/13
[#122] Re: meta programming features — matz@... (Yukihiro Matsumoto) 1997/08/13

まつもと ゆきひろです

[#126] Re: meta programming features — keiju@... (石塚圭樹 ) 1997/08/14

けいじゅ@日本ラショナルです.

[#128] Re: meta programming features — matz@... (Yukihiro Matsumoto) 1997/08/15

まつもと ゆきひろです

[#127] tracer — keiju@... (Keiju ISHITSUKA)

けいじゅ@いそうろう.日本ラショナルです.

36 messages 1997/08/14
[#129] Re: tracer — matz@... (Yukihiro Matsumoto) 1997/08/15

まつもと ゆきひろです

[#131] Re: tracer — keiju@... (石塚圭樹 ) 1997/08/15

けいじゅ@いそうろう.日本ラショナルです.

[#140] Re: tracer — matz@... (Yukihiro Matsumoto) 1997/08/15

まつもと ゆきひろです

[#144] Re: tracer — keiju@... (石塚圭樹 ) 1997/08/16

けいじゅ@日本ラショナルです.

[#150] Re: tracer — matz@... (Yukihiro Matsumoto) 1997/08/18

まつもと ゆきひろです

[#155] Re: tracer — keiju@... (石塚圭樹 ) 1997/08/18

けいじゅ@日本ラショナルです.

[#156] Re: tracer — matz@... (Yukihiro Matsumoto) 1997/08/18

まつもと ゆきひろです

[#162] ruby -r module [Re: tracer] — keiju@... (石塚圭樹 ) 1997/08/19

[#164] Re: ruby -r module [Re: tracer] — WATANABE Hirofumi <watanabe@...> 1997/08/19

わたなべです.

[#185] Re: [ruby-list:3720] Re: Class#eval [Re: ftplib.rb revision 1.4] — keiju@... (石塚圭樹 )

26 messages 1997/08/20
[#186] Re: Class#eval [Re: ftplib.rb revision 1.4] — matz@... (Yukihiro Matsumoto) 1997/08/20

[#193] Re: Class#eval [Re: ftplib.rb revision 1.4] — keiju@... (石塚圭樹 ) 1997/08/20

けいじゅ@日本ラショナルです.

[#194] Re: Class#eval [Re: ftplib.rb revision 1.4] — matz@... (Yukihiro Matsumoto) 1997/08/20

まつもと ゆきひろです

[#195] Re: Class#eval [Re: ftplib.rb revision 1.4] — keiju@... (石塚圭樹 ) 1997/08/20

けいじゅ@日本ラショナルです.

[#200] Re: Class#eval [Re: ftplib.rb revision 1.4] — matz@... (Yukihiro Matsumoto) 1997/08/20

まつもと ゆきひろです

[#207] Re: Class#eval [Re: ftplib.rb revision 1.4] — keiju@... (石塚圭樹 ) 1997/08/22

けいじゅ@日本ラショナルです.

[#209] Re: Class#eval [Re: ftplib.rb revision 1.4] — matz@... (Yukihiro Matsumoto) 1997/08/22

まつもと ゆきひろです

[#211] Re: Class#eval [Re: ftplib.rb revision 1.4] — keiju@... (石塚圭樹 ) 1997/08/22

けいじゅ@日本ラショナルです.

[#212] Re: Class#eval [Re: ftplib.rb revision 1.4] — matz@... (Yukihiro Matsumoto) 1997/08/22

まつもと ゆきひろです

[#213] Re: Class#eval [Re: ftplib.rb revision 1.4] — keiju@... (石塚圭樹 ) 1997/08/22

[#214] Re: Class#eval [Re: ftplib.rb revision 1.4] — matz@... (Yukihiro Matsumoto) 1997/08/22

まつもと ゆきひろです

[#215] Re: Class#eval [Re: ftplib.rb revision 1.4] — keiju@... (石塚圭樹 ) 1997/08/22

[#217] Re: Class#eval [Re: ftplib.rb revision 1.4] — matz@... (Yukihiro Matsumoto) 1997/08/22

まつもと ゆきひろです

[#218] Re: Class#eval [Re: ftplib.rb revision 1.4] — keiju@... (石塚圭樹 ) 1997/08/22

けいじゅ@日本ラショナルです.

[#257] [BUG] MLF — keiju@... (Keiju ISHITSUKA)

けいじゅ@日本ラショナルです.

24 messages 1997/08/26
[#259] Re: [BUG] MLF — matz@... (Yukihiro Matsumoto) 1997/08/26

まつもと ゆきひろです

[#261] Re: [BUG] MLF — keiju@... (石塚圭樹 ) 1997/08/26

けいじゅ@日本ラショナルです.

[#262] Re: [BUG] MLF — keiju@... (石塚圭樹 ) 1997/08/26

けいじゅ@日本ラショナルです.

[#263] Re: [BUG] MLF — matz@... (Yukihiro Matsumoto) 1997/08/26

まつもと ゆきひろです

[#264] Re: [BUG] MLF — keiju@... (石塚圭樹 ) 1997/08/26

けいじゅ@日本ラショナルです.

[#267] Re: [BUG] MLF — matz@... (Yukihiro Matsumoto) 1997/08/26

まつもと ゆきひろです

[#268] Re: [BUG] MLF — keiju@... (石塚圭樹 ) 1997/08/26

けいじゅ@日本ラショナルです.

[#269] Re: [BUG] MLF — matz@... (Yukihiro Matsumoto) 1997/08/26

まつもと ゆきひろです

[#270] Re: [BUG] MLF — keiju@... (石塚圭樹 ) 1997/08/26

けいじゅ@日本ラショナルです.

[#291] illegal here document — shugo@... (前田 修吾 / maeda shugo)

前田です。

15 messages 1997/08/27
[#293] Re: illegal here document — matz@... (Yukihiro Matsumoto) 1997/08/28

まつもと ゆきひろです

[#309] [BUG] method index — keiju@... (Keiju ISHITSUKA)

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

16 messages 1997/08/28
[#310] Re: [BUG] method index — matz@... (Yukihiro Matsumoto) 1997/08/28

まつもと ゆきひろです

[#311] Re: [BUG] method index — keiju@... (石塚圭樹 ) 1997/08/28

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

[#312] Re: [BUG] method index — matz@... (Yukihiro Matsumoto) 1997/08/28

まつもと ゆきひろです

[#316] [Q] [Re: [BUG] method index] — keiju@... (石塚圭樹 ) 1997/08/28

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

[#320] Re: [Q] [Re: [BUG] method index] — matz@... (Yukihiro Matsumoto) 1997/08/29

まつもと ゆきひろです

[#324] virtual class [Re: [Q] [Re: [BUG] method index] ] — keiju@... (石塚圭樹 ) 1997/08/29

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

[ruby-dev:275] Re: [BUG] MLF

From: keiju@... (石塚圭樹 )
Date: 1997-08-27 04:04:42 UTC
List: ruby-dev #275
けいじゅ@日本ラショナルです.

またまたバグレポート+質問です.

In [ruby-dev :00270 ] the message: "[ruby-dev:270] Re: [BUG] MLF ", on
Aug/26 22:28(JST) keiju@bc.mbn.or.jp (石塚圭樹) writes:

1. instance_eval

  class Foo
  end
  
  f = Foo.new
  
  f.instance_eval %q{
    def foo
      print "foo"
    end
  }
  
  f.foo
-----------------
mop.rb:143: NameError: private method `foo' called for #<Foo:0xbf3d4>(Foo)

となります.

ちなみに:

  f.instance_eval %q{
    def foo
      print "foo"
    end
    public :foo
  }
  
はできないんですねぇ...

2. ??
e2mmap.rbに絡んでいて, 話しがややこしいのですが, 良く分からないことが
発生しているので教えて下さい.

以下のソースの中の[A]を見て下さい.

  self.instance_eval ...

となっているのですが, これを

  self.module_eval ...

としても同じ動作をしているようです. ここでの self は 

  class Foo
    extend Exception2MessageMapper
    def_exception(:EFoo, "efoo")
  end

とした時の Exception2MessageMapper.extend_object(cl) で渡るクラスにな
るので, この場合なら Foo というクラスになっていると思います.

そうすると,

  Foo.instance_eval

と

  Foo.module_eval

では動作が違うはずなんですが, 例えば, def foo... とすると両方とも 
Foo#fooが定義されます... module_evalでは Foo.fooが定義されるはずですよ
ね....

これは一体どういうことなのでしょう?

# ちなみに, 先ほどのバグレポートがあるにも関わらず instance_eval が動
# 作するのもなぞですが...


-- e2mmap.rb
  module Exception2MessageMapper
    RCS_ID='-$Header: /home/keiju/var/src/var.lib/ruby/RCS/e2mmap.rb,v 1.4 1997/08/18 07:12:12 keiju Exp keiju $-'
    
#    E2MM = Exception2MessageMapper
    
    def Exception2MessageMapper.extend_object(cl)
      super
      cl.bind(self)
    end
    
    def Exception2MessageMapper.extend_to(b)
      c = eval("self", b)
      c.extend(self)
    end
    
    def bind(cl)
      begin
	map = const_get(:E2MM_ErrorMSG, TRUE).dup
      rescue NameError
	map = Hash.new
      end
      const_set(:E2MM_ErrorMSG, map)
      
      print self.inspect, "\n"

      # [A] self.module_eval
      self.instance_eval %q^
	def fail!(*rest)
	  super
	end
	
	# fail(err, *rest)
	#	err:	例外
	#	rest:	メッセージに渡すパラメータ
	#
	def fail(err, *rest)
	  if form = E2MM_ErrorMSG[err]
	    $! = err.new(sprintf(form, *rest))
	    $@ = caller(0)
	    $@.shift
	    super()
	  else
	    Exception2MessageMapper.fail Exception2MessageMapper::ErrNotRegisteredException, err.to_s
	  end
	end
	public :fail
	
	# def_exception(c, m)
	#	    c:  exception
	#	    m:  message_form
	#	例外cのメッセージをmとする.
	#
	def def_e2message(c, m)
	  E2MM_ErrorMSG[c] = m
	end
	
	# def_exception(c, m)
	#	    n:  exception_name
	#	    m:  message_form
	#	    s:	例外スーパークラス(デフォルト: Exception)
	#	例外名``c''をもつ例外を定義し, そのメッセージをmとする.
	#
	#def def_exception(n, m)
	def def_exception(n, m, s = Exception)
	  n = n.id2name if n.kind_of?(Fixnum)
	  e = Class.new(s)
	  const_set(n, e)
#	  E2MM_ErrorMSG[e] = m
	  const_get(:E2MM_ErrorMSG)[e] = m
	  print inspect, "\n"
	  print E2MM_ErrorMSG.inspect, "\n"
	  print const_get(:E2MM_ErrorMSG).inspect, "\n"
	end
	^
      end
      
      extend Exception2MessageMapper
      def_exception(:ErrNotClassOrModule, "Not Class or Module")
      def_exception(:ErrNotRegisteredException, "not registerd exception(%s)")
    end

__
..........................................石塚 圭樹@日本ラショナル...
----------------------------------->> e-mail: keiju@bc.mbn.or.jp <<---

In This Thread