[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.)