ruby类变量中访问器方法的简写

ruby类变量中访问器方法的简写,ruby,Ruby,我想要一些为类变量创建访问器方法的短方法和更少重复的方法。在这里,我看到有太多外观相同的代码,即方法。对于我们的实例变量,有没有像我们这样的捷径@具有属性访问器的foobar:foobar 您可以这样做: class User @user_id = 0 @user_long = 0 @user_lat = 0 class << self attr_accessor :user_id, :user_long, :user_lat end end 您可以这

我想要一些为类变量创建访问器方法的短方法和更少重复的方法。在这里,我看到有太多外观相同的代码,即方法。对于我们的实例变量,有没有像我们这样的捷径@具有属性访问器的foobar:foobar


您可以这样做:

class User
  @user_id = 0
  @user_long = 0
  @user_lat = 0 
  class << self
    attr_accessor :user_id, :user_long, :user_lat
  end
end

您可以这样做:

class User
  @user_id = 0
  @user_long = 0
  @user_lat = 0 
  class << self
    attr_accessor :user_id, :user_long, :user_lat
  end
end

你可能要找的是这样的东西

class User
  class << self
    attr_accessor :user_id
  end
end

这将在类的上创建实例变量,而不是类变量。这可能会满足您的需要,但我建议您阅读并理解Ruby的对象模型

你可能在找这样的东西

class User
  class << self
    attr_accessor :user_id
  end
end

这将在类的上创建实例变量,而不是类变量。这可能会满足您的需要,但我建议您阅读并理解Ruby的对象模型

一般来说,最好使用实例变量而不是类变量,因为类变量的共享语义有些奇怪:

class User
  class << self
    attr_accessor :user_id, :user_long, :user_lat
  end

  self.user_id   = 0
  self.user_long = 0
  self.user_lat  = 0 
end

User.user_id   #=> 0
User.user_long #=> 0
User.user_lat  #=> 0

User.user_id   = 23423423
User.user_long = -342.34
User.user_lat  = 343.3

User.user_id   #=> 23423423
User.user_long #=> -342.34
User.user_lat  #=> 343.3
然而,无论您使用的是类实例变量还是类变量,它看起来都是一种奇怪的设计。既然系统中不能有多个用户,为什么还要有一个类呢?为什么不直接使用一个对象呢

class << (User = Object.new)
  attr_accessor :user_id, :user_long, :user_lat
end

User.user_id   = 0
User.user_long = 0
User.user_lat  = 0 

User.user_id   #=> 0
User.user_long #=> 0
User.user_lat  #=> 0

User.user_id   = 23423423
User.user_long = -342.34
User.user_lat  = 343.3

User.user_id   #=> 23423423
User.user_long #=> -342.34
User.user_lat  #=> 343.3

一般来说,最好使用实例变量而不是类变量,因为类变量的共享语义有些奇怪:

class User
  class << self
    attr_accessor :user_id, :user_long, :user_lat
  end

  self.user_id   = 0
  self.user_long = 0
  self.user_lat  = 0 
end

User.user_id   #=> 0
User.user_long #=> 0
User.user_lat  #=> 0

User.user_id   = 23423423
User.user_long = -342.34
User.user_lat  = 343.3

User.user_id   #=> 23423423
User.user_long #=> -342.34
User.user_lat  #=> 343.3
然而,无论您使用的是类实例变量还是类变量,它看起来都是一种奇怪的设计。既然系统中不能有多个用户,为什么还要有一个类呢?为什么不直接使用一个对象呢

class << (User = Object.new)
  attr_accessor :user_id, :user_long, :user_lat
end

User.user_id   = 0
User.user_long = 0
User.user_lat  = 0 

User.user_id   #=> 0
User.user_long #=> 0
User.user_lat  #=> 0

User.user_id   = 23423423
User.user_long = -342.34
User.user_lat  = 343.3

User.user_id   #=> 23423423
User.user_long #=> -342.34
User.user_lat  #=> 343.3

@米莎:我知道没有理由写这门课。我有这个疑问,所以我问:“米沙,我知道没有理由写这门课。我有这个疑问,所以我问。@Mischa class@Mischa class