询问ruby中类的一些特性

时间:2016-06-28 13:14:40

标签: 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方法并在我们将其设置为@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)

1 个答案:

答案 0 :(得分:2)

@符号用于保留变量供以后使用。从这个例子来看,它是'很难理解它的重要性。类变量也有@@符号 - 但我暂时不会参与其中。

在您的代码中multiply方法正在扮演存储角色(可能以后用),get_multiply用于检索存储的内容。

如果你刮了get_multiply并直接使用multiply - 公平。事情会奏效。但是你现在没有选择提前做一些计算,存储它并在需要时直接检索它。

希望它有帮助:)