在ruby中,您可以直接通过@var_name
或通过私有getter在内部访问变量attr_reader :var_name
。
哪一个解决方案更(正确地说)正确?使用解决方案1或解决方案2有什么优点/缺点?
解决方案1:
class Point
def initialize(x, y)
@x = x
@y = y
end
def distance
Math.sqrt(@x ** 2 + @y ** 2)
end
end
解决方案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
我将使用第二个选项:
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
有两个原因:
attr_reader
可能更快(如Filip Bartuzi指出的那样)attr_reader
可以通过用attr_reader
自定义getter方法替换来简化以后重构该类的过程。本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句