首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ruby单例attr_accessor

Ruby单例attr_accessor
EN

Stack Overflow用户
提问于 2013-07-09 21:22:25
回答 3查看 1.8K关注 0票数 2

在使用attr_accessor时,我正在尝试创建一个包含Singleton模块的类。不过,这似乎不起作用。

代码语言:javascript
复制
require 'singleton'

class Foo
  attr_accessor :bar
  include Singleton
end

Foo.bar = 'foobar'

这将产生以下错误:

代码语言:javascript
复制
undefined method `bar=' for Foo:Class (NoMethodError)

我在这里做错了什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-07-09 21:28:17

Singleton不会改变attr_accessor的工作方式。它只能确保您只能有一个实例。因此,您必须在特征类中调用attr_accessor,就像在没有Singleton的情况下一样。

代码语言:javascript
复制
class Foo
  singleton_class.class_eval{attr_accessor :bar}
end
票数 5
EN

Stack Overflow用户

发布于 2013-07-09 21:26:19

试一下-

代码语言:javascript
复制
     Foo.instance.bar = 'foobar'

记录的和

票数 2
EN

Stack Overflow用户

发布于 2013-07-09 21:36:25

使用attr_accessors定义的方法是实例方法,您尝试在Foo类上调用方法bar=,而Foo类并没有定义它。您必须先获取Foo实例,然后在其上调用bar=

代码语言:javascript
复制
Foo.instance.bar = "whatever"
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17549320

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档