[#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:44424] メソッドのargumentについて

From: Akira Hayakawa <ruby@...>
Date: 2007-12-30 05:42:48 UTC
List: ruby-list #44424
初投稿です。
名前はAkiraです。
漢字では輝と書きます。

今、オブジェクト指向について悩んでいて、
メソッドが他の「自作」クラスのメソッドをargumentにとって良いのか?
と考えています。
Rubyは型がありません。
だから例えば

class My_Class_A
  def initialize(class_b)
    @class_b_instance = class_b
  end
end

と書いて、class_bのインスタンスを初期化で持つ事にします。
しかし、ここで
My_Class_A.new("aaaa")
として、文字列を入れても、持ててしまいます。
これはちょっとおかしな事です。

もし、こういう書き方があるかは知りませんが、
class My_Class_A
  def initialize(My_Class_B class_b)
    @class_b_instance = class_b
  end
end

という風にargumentの段階で強要すれば、
代入した時に「そりゃダメだよ」と教えてくれます。
これは筋が通っていると思いますが、

Rubyの場合、
1)インスタンスを使ううちに型が合ってない事が発覚する。
くらいしかエラーが出ないと思います。

そこで質問は、まず、
1)Rubyでクラスを作る時に、他のクラスのインスタンスをargumentにとる事が許されますか?
2)また、許される場合に、この少し奇妙な仕様は動的言語の仕様ですか?
の2点でさせてもらおうと思います。
-- 
Akira Hayakawa <ruby@i-mail.jp>

In This Thread

Prev Next