tob*_*son 7 ruby ruby-on-rails activesupport
我无法从通过源的区别是什么之间找工作了cattr_*,并mattr_*分别在类和模块提供的方法.我读到了这个问题:Rails模块中的mattr_accessor是什么?它提供了两种方法的一些细节,但没有强调差异.
所以我的问题是它们之间的区别是什么?为什么我们在源代码中实际上完全相同时需要两套方法?另外,我们应该在什么时候使用?
mik*_*kej 10
Module是类的超类,Class所以如果可以想到一个适当的通用名称,那么可以使用定义访问器的方法Module,它可以用于模块和类.请注意以下工作:
class Bar
mattr_accessor :test
end
Run Code Online (Sandbox Code Playgroud)
但
module Foo
cattr_accessor :test
end
Run Code Online (Sandbox Code Playgroud)
不行.
在应该在类中使用的方法上有一个c前缀,在模块内部使用的方法上有一个m前缀,这有助于使代码更清晰.