[#44310] プログラムに対して意図したとおりの文字列を渡す方法 — "Information Kanasansoft" <kanasansoft@...>

kanasanです。

9 messages 2007/12/05

[#44332] クラス:相互参照系の作成方法について質問です — "Saburoh Sakai" <sabroh@...>

はじめまして、さかいと申します。

12 messages 2007/12/11

[#44366] Rake改善プロジェクト — "Hajime Hoshi" <hajimehoshi@...>

東京大学修士 1 年の星一と申します。

14 messages 2007/12/19

[ruby-list:44334] Re: クラス:相互参照系の作成方法について質問です

From: m-hatake@...
Date: 2007-12-11 19:08:24 UTC
List: ruby-list #44334
畠山といいます。

わたしがいつもやるのはインスタンスを生成した後にメンバー変数にセットする
というものですが、どうでしょう。

class A
	def setB(b)
		@b = b
	end
end

class B
	def setA(a)
		@a = a
	end
end

a = A.new
b = B.new
a.setB(b)
b.setA(a)


--
hatake

From: rubikitch@ruby-lang.org
Subject: [ruby-list:44333] Re: クラス:相互参照系の作成方法について質問です
Date: Wed, 12 Dec 2007 03:08:39 +0900

> From: "Saburoh Sakai" <sabroh@tkc.att.ne.jp>
> Subject: [ruby-list:44332] クラス:相互参照系の作成方法について質問です
> Date: Wed, 12 Dec 2007 01:49:28 +0900
> 
> るびきちです。
> 
> > 現在、互いを相互に参照するクラスの系を作りたいのですが、
> > そのようなことはRubyで可能でしょうか?
> 
> 可能です。
> 
> > いわゆる「循環参照」を実現させたいわけなのです…。
> > 具体的には以下のようなことです。
> > (snip)
> > class A
> >  b=B.new() ★
> > end
> 
> ただ、このbはローカル変数なのでメソッドからは参照できません。
> おそらくクラス変数なんでしょう。
> ということで、以下のコードでもクラス変数として宣言しておきました。
> 
> こんな感じに空のクラスを宣言しておきます。
> そうすることで実装を記述するときにお互いのクラスが見えるようになります。
> 
> class A; end
> class B; end
> 
> class A
>   @@b = B.new                     # => #<B:0xb7dc77d0>
> end
> 
> class B
>   @@a = A.new                     # => #<A:0xb7dc75b4>
> end
> 
> --
> rubikitch
> Blog: http://d.hatena.ne.jp/rubikitch/
> Site: http://www.rubyist.net/~rubikitch/

In This Thread