Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
关于ruby中类的一些特性的探讨_Ruby - Fatal编程技术网

关于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

我是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_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
。明白了吗?很有趣。谢谢