Ruby 类变量上的attr\u访问器 类用户 类无输出 User.masterPassword#=>无输出

Ruby 类变量上的attr\u访问器 类用户 类无输出 User.masterPassword#=>无输出,ruby,Ruby,我试图在类变量上使用attr\u reader,但它似乎不起作用 我在谷歌上搜索过,但似乎不明白。因此,如果有人能简单地向我解释这个问题及其解决方案(,而不使用getter和setter方法)。attr\u reader只需创建如下方法: class User class << self attr_reader :passwordManagerAccountID attr_reader :masterPassword def session(passw

我试图在类变量上使用
attr\u reader
,但它似乎不起作用


我在谷歌上搜索过,但似乎不明白。因此,如果有人能简单地向我解释这个问题及其解决方案(,而不使用getter和setter方法)。

attr\u reader
只需创建如下方法:

class User 
  class << self
    attr_reader :passwordManagerAccountID
    attr_reader :masterPassword

    def session(passwordManagerAccountID , masterPassword)
      @@passwordManagerAccountID = passwordManagerAccountID
      @@masterPassword = masterPassword
    end
  end  
end

User.session("sdsd" , "sdsd")
User.passwordManagerAccountID #=> no output
User.masterPassword #=> no output
因此,您必须在
会话中访问正确的类实例变量(例如
@masterPassword
),或者放弃使用
attr\u reader
并编写自己的访问器:

def masterPassword
  @masterPassword
end
除非你碰巧有提供,&


另请参阅,了解为什么您可能应该只使用类实例变量。

attr\u reader
读取的不是类变量,而是实例变量-您需要使用类实例变量:

def masterPassword
  @@masterPassword
end

请注意Ruby命名约定:它应该是
password\u manager\u acound\u id
和类似的名称。Ruby中没有lowerCamelCase。

我知道其中的区别,我想知道是否可以对类变量而不是实例变量使用attr\u访问。像RubyonRails一样,我们可以使用cattr_accessor@RushabhRajeshKumarPadalia不。@RushabhRajeshKumarPadalia是的。小心说“红宝石中没有低熔点”。是的,这不是一般的惯例。Ruby语法/解释器不关心,只有开发人员关心。嗯,不知道Ruby命名约定,Thanx这里可能也有答案:你真的事先在谷歌上搜索过吗??
def session(passwordManagerAccountID , masterPassword)
  @passwordManagerAccountID = passwordManagerAccountID
  @masterPassword = masterPassword
end