[#29987] ライセンス論点整理 — Tacos <ozaki@...>

38 messages 2001/06/01

[#30030] Ruby license discussion — Masayuki Hatta <mhatta@...>

八田と申します。

23 messages 2001/06/02
[#30034] Re: Ruby license discussion — "Akinori MUSHA" <knu@...> 2001/06/02

At Sat, 2 Jun 2001 14:31:02 +0900,

[#30039] Re: Ruby license discussion — akira yamada / やまだあきら <akira@...> 2001/06/02

[#30056] Re: Ruby license discussion — Takaaki Higuchi <thiguchi@...> 2001/06/03

In "akira yamada / やまだあきら <akira@ruby-lang.org>" wrote:

[#30155] How do we treat local static variables? — IKEGAMI Daisuke <daisu-ik@...>

ruby-list の皆さんこんにちは。

13 messages 2001/06/09
[#30156] Re: How do we treat local static variables? — NISHI Takao <zophos@...9.com> 2001/06/09

にし@おかやまです。

[#30163] FW: [arg1:119] RE: [RubyUnit:4203] Re: インストーラ・プロジェクト — "KANEMITSU Masao" <masao-k@...>

金光です。RAAを改善しませんか?

10 messages 2001/06/10

[#30190] 呼び出し元のクラスを知る方法? — "Shin'ya Adzumi" <adzumi@...>

あづみです。

13 messages 2001/06/11

[#30215] パス文字列を操作するライブラリはありませんか? — "Kaoru Shirai" <shirai@...1jp.com>

 こんにちわ。常日頃 Ruby を愛用させて頂いております。

13 messages 2001/06/13

[#30270] setup.rb — rubikitch@...

るびきちです。

16 messages 2001/06/16
[#30291] Re: setup.rb — Minero Aoki <aamine@...> 2001/06/18

あおきです。すみません、見逃してました。

[#30292] Re: setup.rb — rubikitch <rubikitch@...> 2001/06/19

From: Minero Aoki <aamine@mx.edit.ne.jp>

[#30293] Re: setup.rb — TADA Tadashi <sho@...> 2001/06/19

ただただしです。

[#30305] TMarshal — rubikitch@...

るびきちです。

25 messages 2001/06/19

[#30333] 共同著作物の謎( re :ライセンス) — Tacos <ozaki@...>

13 messages 2001/06/20
[#30334] Re: 共同著作物の謎( re :ライセンス) — Tacos <ozaki@...> 2001/06/20

[ruby-list:30171] Re: How do we treat local static variables?

From: NISHI Takao <zophos@...9.com>
Date: 2001-06-10 08:30:37 UTC
List: ruby-list #30171
にし@おかやまです。

元メールの方はスマートに解決した様ですが,力押しでもなんとかなりまっせ的
解法ということで,delegate.rbからコードを拝借してこんな風にしてみました。

-- 
NISHI Takao    D add ninth Co.,Ltd.
  1-2-24 Toyonari, Okayama, 700-0942, Japan
  Phone:+81-86-801-4216  Facsimile:+81-86-801-4217         @@@@
  mailto:zophos@Dadd9.com    http://www.Dadd9.com/         OO/
  PGP:1466 BB16 3186 CC11 1A06 713C 5518 3A2A A122 118A   -|/


require 'singleton'

class StaticBasePool<Hash
    include Singleton
end

class Static

    def initialize(obj)
	@pool=StaticBasePool.instance
	@tag=getCallerMethodName
	unless(@pool.has_key?(@tag))
	    @pool[@tag]=obj
	end

	@val=@pool[@tag]

        #
        # following code originate from delegate.rb 
        #
	preserved = ::Kernel.instance_methods
	preserved -= ["to_s","to_a","inspect","==","=~","==="]
	for t in self.type.ancestors
	    preserved |= t.instance_methods
	    preserved |= t.private_instance_methods
	    preserved |= t.protected_instance_methods
	    break if t == Static
	end
	for method in @val.methods
	    next if preserved.include? method
	    eval <<-EOS
	    def self.#{method}(*args, &block)
		begin
                    @pool[@tag]=@val.__send__(:#{method}, *args, &block)
                    return @pool[@tag]
		rescue Exception
                    $@.delete_if{|s| /^\\(eval\\):/ =~ s}
                    raise
                end
            end
            EOS
        end
    end

    private
    def getCallerMethodName
        tmp=caller[2].split(":in ",2)
        return tmp[0].split(":")[-1].to_s+":"+tmp[1]
    end
end
	

def foo
    s=Static.new(0)
    s+=1

    return s
end

def bar
    s=Static.new("")
    t=Static.new(0)
    
    s+="."
    t+=2

    return [s,t]
end

10.times{
    p foo
    p bar
}

In This Thread