From: rubikitch@... Date: 2008-01-05T02:11:01+09:00 Subject: [ruby-list:44435] Re: コンストラクタの引数について&インスタンス変数の持ち方について From: Akira Hayakawa Subject: [ruby-list:44431] コンストラクタの引数について&インスタンス変数の持ち方について Date: Sat, 5 Jan 2008 00:16:02 +0900 > 今、ある座標上の点を表すクラスPointというものを考えます。 > このPointは当然、x座標とy座標を持つと思いますが、ここで質問です。 > > class Point > def initialize(x, y) > @x = x > @y = y 構造体を使う解法もあります。 # Pointクラスを定義。 # ただ座標を表すだけならば構造体を使えばたった一行だけで定義できる。 Point = Struct.new :x, :y # p1 は (3, 4) p1 = Point.new 3, 4 # => # p1.x # => 3 p1.y # => 4 # もし、原点からの距離を求めるメソッドが欲しければPointクラスを開けば # メソッドを追加できる。Rubyならばこんな芸当も可能。 class Point # 原点からの距離 def radius # hypotはhypotenuse(斜辺)の意味。 # もちろん Math.sqrt(x*x + y*y)でもよい。 # 構造体ではxとyという(変数に見えるが)メソッドが定義されている。 Math.hypot(x, y) end end # さっそくp1にradiusメソッドを適用してみる。 p1.radius # => 5.0 -- rubikitch Blog: http://d.hatena.ne.jp/rubikitch/ Site: http://www.rubyist.net/~rubikitch/