我正在写一个涉及多种方法的课程。 但是,每个方法的最终结果都保存在实例变量中,以便其他方法可以访问它们。 但是在ruby中,方法调用会返回最后一个值,这种方法也可以采用。但我感到困惑的是,哪种方法在程序上是正确的,而且更像红宝石。
我的代码的例子就是这个
方法1: - 方法调用
class Foo
def cat
"This is a cat"
end
def bigcat
cat
end
end
mycat = Foo.new
mycat.cat
mycat.bigcat
Output:- This is a cat
This is a cat
方法2: - 实例变量
class Foo
def cat
@cat_talk = "This is a cat"
end
def bigcat
@cat_talk
end
end
mycat = Foo.new
mycat.cat
mycat.bigcat
Output:- This is a cat
This is a cat
上面的例子可能看起来很简单,但在我的ruby类中,实现更复杂,更大。
答案 0 :(得分:1)
我建议这样的事情(备忘录):
class Foo
def cat
@cat_talk ||= "This is a cat"
end
def bigcat
cat
end
end
mycat = Foo.new
mycat.cat
mycat.bigcat
Output:- This is a cat
This is a cat
通常恕我直言,在包装变量而不是直接访问变量时调用方法会更好。如果你想要例如大写它,你可以包裹cat
并保留实际数据。
答案 1 :(得分:1)
您可以重命名实例变量并使用访问器方法,而不是定义方法bigcat
。
基于dimitris answer的示例:
class Foo
def cat
@bigcat ||= "This is a cat"
end
attr_reader :bigcat
end
mycat = Foo.new
mycat.cat
mycat.bigcat
如果您想保留变量名称,可以将其与alias
:
class Foo
def cat
@cat_talk ||= "This is a cat"
end
attr_reader :cat_talk
alias :bigcat :cat_talk
end
mycat = Foo.new
mycat.cat
mycat.cat_talk
mycat.bigcat
除了您的问题,仅供参考:您还可以使用attr_writer
定义一个写入方法。