关于ruby中类的一些特性的探讨
我是ruby新手,目前正在读一本书。读完这一节后,我自己做了一个例子,但仍然有点困惑关于ruby中类的一些特性的探讨,ruby,Ruby,我是ruby新手,目前正在读一本书。读完这一节后,我自己做了一个例子,但仍然有点困惑 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
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
方法并在将其设置为a*b
后返回@result
有什么区别吗。此外,如果我取出@
登录结果,我的代码仍然有效。书中说这是一个实例变量。我的问题是,@
的真正意义是什么
这里的代码仍然有效
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)
@
符号用于保存变量以供以后使用。从这些例子中,很难理解它的重要性。类变量也有@
符号,但我现在不谈这个
在您的代码中,multiply
方法起到存储(可能供以后使用)的作用,get\u multiply
用于检索存储的内容
如果你刮取的话,就直接使用乘法,这很公平。事情会成功的。但现在您将无法选择提前进行一些计算,存储它并在需要时直接检索它
希望它有帮助:)@
符号用于保存变量以供以后使用。从这些例子中,很难理解它的重要性。类变量也有@
符号,但我现在不谈这个
在您的代码中,multiply
方法起到存储(可能供以后使用)的作用,get\u multiply
用于检索存储的内容
如果你刮取的话,就直接使用乘法,这很公平。事情会成功的。但现在您将无法选择提前进行一些计算,存储它并在需要时直接检索它
希望它有帮助:)“我的问题是,@真的有什么意义?”-它是一个实例变量。是的,它在书中说过。但是如果我去掉@符号,我的代码仍然有效。他们为什么在这里使用它?不,如果你取出@
你的代码将无法工作。也就是说,将我的_操作放入。get _multiply
将不打印任何内容。如果在get _multiply
方法中删除@,ruby将产生错误(未定义的局部变量或方法),我认为他的意思是刮取get _multiply
方法,直接使用multiply
方法。“我的问题是,@真的有什么意义?”-它是一个实例变量。是的,它在书中说过。但是如果我去掉@符号,我的代码仍然有效。他们为什么在这里使用它?不,如果你取出@
你的代码将无法工作。也就是说,放入我的_操作。get _multiply
将不打印任何内容。如果在get _multiply
方法中删除@in,ruby将产生错误(未定义的局部变量或方法),我想他的意思是刮取get _multiply
方法并直接使用multiply
方法。你能看到我的编辑吗。在没有它的情况下它仍然有效。这就是我所理解的:如果你不把@。然后尝试在另一个方法中使用与@attached相同的变量。你不能这样做,因为这里没有定义它?是的,我明白。您在编辑中所做的是:删除get\u multiply
(它根本没有被使用)。您仅直接使用乘法
,而不存储结果并在以后使用。明白了吗?如果你不在变量前面加@,比如说result
,而不是@result
,那么这个变量将无法通过其他方法访问:比如result
中的乘法将无法访问Get\u multiply
。明白了吗?很有趣。谢谢你能看到我的编辑。在没有它的情况下它仍然有效。这就是我所理解的:如果你不把@。然后尝试在另一个方法中使用与@attached相同的变量。你不能这样做,因为这里没有定义它?是的,我明白。您在编辑中所做的是:删除get\u multiply
(它根本没有被使用)。您仅直接使用乘法
,而不存储结果并在以后使用。明白了吗?如果你不在变量前面加@,比如说result
,而不是@result
,那么这个变量将无法通过其他方法访问:比如result
中的乘法将无法访问Get\u multiply
。明白了吗?很有趣。谢谢