我是红宝石的新手,目前正在读书。在阅读完这一部分后,我做了我自己的例子,仍然有点困惑
class Operation
def multiply(a,b)
@result = a*b
end
def get_multiply
return @result
end
def divide(a,b)
@dividend = a / b
return dividend
end
end
my_operation = Operation.new
my_operation.multiply(5,6)
puts my_operation.get_multiply
我的代码之间是否存在任何差异,只需废弃get_multiply
方法并在我们将其设置为@result
后返回a*b
。此外,如果我在结果上取出@
符号,我的代码仍然有效。在书中它说这是一个实例变量。我的问题是,@
真的是什么意思?
此处的代码仍可使用
class Operation
def multiply(a,b)
result = a*b
end
def get_multiply
return result
end
def divide(a,b)
@dividend = a / b
return dividend
end
end
my_operation = Operation.new
puts my_operation.multiply(5,6)
答案 0 :(得分:2)
@
符号用于保留变量供以后使用。从这个例子来看,它是'很难理解它的重要性。类变量也有@@
符号 - 但我暂时不会参与其中。
在您的代码中multiply
方法正在扮演存储角色(可能以后用),get_multiply
用于检索存储的内容。
如果你刮了get_multiply
并直接使用multiply
- 公平。事情会奏效。但是你现在没有选择提前做一些计算,存储它并在需要时直接检索它。
希望它有帮助:)