ruby - ruby 中的实例变量就像类变量

标签 ruby variables instance-variables class-variables

@ - 实例变量 @@ - 类变量。

因此,如果没有创建实例,则不应共享实例变量值。但是:

class Add

  def self.add(what)
    if not defined? @a
      @a = 0
    end
    @a += what
    puts @a.to_s
  end
end

Add.add(4)
Add.add(4)

结果:

$ruby main.rb

4
8

为什么?

最佳答案

Ruby 中的每个类也是一个对象,Class 类的实例。所以,您的 @a 只是 Add 类的实例变量。

关于ruby - ruby 中的实例变量就像类变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19958650/

相关文章:

ruby - 在 WSL(适用于 Linux 的 Windows 子系统)上安装 Ruby 2.3

php - 在 PHP 的 strtotime() 函数中传递变量

返回实例变量的 c++ 方法可以访问变量中的数据但不能更改它,但编译时不会产生错误

ruby-on-rails - ConversationsController#index 中的 ActiveRecord::RecordNotFound -- 无法找到具有 'id' = 的用户

Ruby 方法链接中间值

ruby - 是否有 'join' 方法的 bang 版本?

javascript - 将变量值插入ajax post数据

javascript - 在 Javascript/React 中从另一个文件调用全局字符串

python - 类设计: Initializing and updating instance variables elegantly

Ruby 在类外创建实例变量