質問
インスタンス変数に挙動について質問です。
initializeメゾットで@x,@y = x,y と代入したのにも関わらずinspectメゾットでは"#{x}#{y}"と@をつけずに呼び出しています。
これはなぜでしょうか?
もし、私がこの演算子を再定義するプログラムの挙動を理解しきれていないようでしたら、ちょっとした解説をしていただけると嬉しいです。
Ruby
1 def inspect # pメソッドで「(x, y)」と表示する 2 "(#{x}, #{y})" 3 end 4
該当ソースコード
Ruby
1class Point 2 attr_accessor :x, :y 3 4 def initialize(x=0, y=0) 5 @x, @y = x, y 6 end 7 8 def inspect # pメソッドで「(x, y)」と表示する 9 "(#{x}, #{y})" 10 end 11 12 def +(other) # x、yのそれぞれを足す 13 self.class.new(x + other.x, y + other.y) 14 end 15 16 def -(other) # x、yのそれぞれを引く 17 self.class.new(x - other.x, y - other.y) 18 end 19end 20 21point0 = Point.new(3, 6) 22point1 = Point.new(1, 8) 23 24p point0 #=> (3, 6) 25p point1 #=> (1, 8) 26p point0 + point1 #=> (4, 14) 27p point0 - point1 #=> (2, -2)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。