ActiveSupport 中 mattr_accessor 和 cattr_accessor 之间的区别?

2024-03-02

我无法通过查看源代码来弄清楚两者之间的区别cattr_* and mattr_*分别在类和模块中提供的方法。我读过这个问题:Rails 模块中的 mattr_accessor 是什么? https://stackoverflow.com/questions/185573/what-is-mattr-accessor-in-a-rails-module其中提供了有关这两种方法的一些详细信息,但没有突出显示差异。

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


Module是该类的超类Class因此,如果可以想到一个合适的通用名称,那么可以将定义访问器的方法放在Module它适用于模块和类。请注意,以下内容有效:

class Bar
  mattr_accessor :test
end

but

module Foo
  cattr_accessor :test
end

行不通的。

有一个c应该在类内部使用的方法的前缀和m在模块内部使用的方法上的前缀只会有助于使您的代码更清晰一些。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ActiveSupport 中 mattr_accessor 和 cattr_accessor 之间的区别? 的相关文章

随机推荐