Ruby: Wie soll ich auf Instanzvariablen innerhalb einer Klasse zugreifen?
In Ruby können Sie intern direkt über @ auf Variablen zugreif@var_name
oder über private Getterattr_reader :var_name
.
Welche Lösung ist mehr (semantisch?) richtig? Vor- und Nachteile der Verwendung von Lösung 1 oder Lösung 2?
Lösung 1:
class Point
def initialize(x, y)
@x = x
@y = y
end
def distance
Math.sqrt(@x ** 2 + @y ** 2)
end
end
Lösung 2:
class Point
def initialize(x, y)
@x = x
@y = y
end
def distance
Math.sqrt(x ** 2 + y ** 2)
end
private
attr_reader :x, :y
end