Ruby:我应该如何访问类中的实例变量? [英] Ruby: How should I access instance variables inside a class?
本文介绍了Ruby:我应该如何访问类中的实例变量?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在ruby中,您可以通过 @var_name
或通过私有getters attr_reader:var_name
直接内部访问变量。
In ruby you can internally access variables directly via @var_name
or via private getters attr_reader :var_name
.
哪个解决方案更多(语义?)正确?使用解决方案1或解决方案2的任何优点/缺点?
Which solution is more (semantically?) correct? Any advantages/disadvantages of using either solution 1 or solution 2?
解决方案1:
class Point
def initialize(x, y)
@x = x
@y = y
end
def distance
Math.sqrt(@x ** 2 + @y ** 2)
end
end
$ b b
解决方案2:
Solution 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
通过用自定义getter方法替换attr_reader
,更容易重构该类。
attr_reader
might be faster (as Filip Bartuzi already pointed out)- Using
attr_reader
might make it easier to refactor that class later on by replacing theattr_reader
with a custom getter method.
这篇关于Ruby:我应该如何访问类中的实例变量?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文