首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在ActiveSupport中mattr_accessor和cattr_accessor有什么区别?

在ActiveSupport中mattr_accessor和cattr_accessor有什么区别?
EN

Stack Overflow用户
提问于 2010-02-05 06:43:17
回答 1查看 4.7K关注 0票数 9

通过查看源代码,我找不出分别在类和模块中提供的cattr_*mattr_*方法之间的区别。我读到了这个问题:What is mattr_accessor in a Rails module?,它提供了关于这两种方法的一些细节,但没有强调差异。

所以我的问题是,它们之间的区别是什么,为什么我们需要这两组方法,而它们在源代码中实际上是相同的?另外,我们应该在什么时候使用哪一个?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-02-05 07:51:46

Module是类Class的超类,所以如果可以想出一个合适的通用名称,那么定义访问器的方法就可以放在Module上,它将适用于模块和类。请注意,以下代码可以正常工作:

代码语言:javascript
复制
class Bar
  mattr_accessor :test
end

代码语言:javascript
复制
module Foo
  cattr_accessor :test
end

不会起作用的。

在应该在类中使用的方法上加一个c前缀,在模块内使用的方法上加一个m前缀,这有助于使您的代码更清晰一些。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2203800

复制
相关文章

相似问题

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