[ruby-list:669] [Q] Def of Vect. (Re: call by reference)

From: Hara Shin-ichiro <sinara@...>
Date: 1996-09-30 08:31:00 UTC
List: ruby-list #669
原です。

非常に初歩的な質問を(また)させてください。

1)

以前、ruby のオブジェクトは全て参照であるとうかがいましたが、やっ
と意味が分かりました。ちょっと混乱してしまったのは、代入(=)は特
殊な演算子で、メソッドではなく、構造体へのポインタの受渡しの様なも
のであることを十分認識していなかったからでした。ところで結局、

代入やメソッドへの引数渡しが「値渡し」になるのは、数値(Numeric
以下のクラスに属するオブジェクト)のみである

と言ってしまっていいでしょうか?

2)

これは一般的なプログラミングの話かも知れませんが、例えば2次元の
ベクトルを表すクラスを作ったとして + を定義したりするには、どうす
ればいいでしょうか?私は、

class Vector
  def initialize(a = 0, b = 0)
    @x, @y = a, b
  end
  attr("x", TRUE)
  attr("y", TRUE)
  def +(u); Vector.new(@x + u.x, @y + u.y); end
  def to_s; "(#@x,#@y)"; end
end

のようにしてみました。しかしなんとなく Vector Class の定義の中で
Vector.new を使うのは気持ちが悪いのですが、これでいいですか?「普
通」、どの様に書きますか?
---===-=-=-=-=-=-=-=-=======--=-=-=-==-=-===-=-=-=-=-=-=--=-==-=--
                           Shin-ichro Hara(Nagaoka Univ.of Tech.)

In This Thread

Prev Next