12

我想

class ApplicationController < ActionController::Base
  include Foo

就是添加一个“mixin”——让Foo模块中的所有方法都被视为ApplicationController的方法。

但现在我看到的代码是

include Bar

class ApplicationController < ActionController::Base
  include Foo

那么为什么它在外面ApplicationController呢?这与把它放在里面的更常见的用法有什么不同ApplicationController

4

1 回答 1

19

是的,include Foo在一个类内部添加Foo到该类的祖先,从而使所有Foo的实例方法都可用于这些类的实例。

任何类定义之外include Foo都会添加FooObject. 即它就像你include Foo在类的定义中所做的一样Object。这样做的用途是所有Foo的实例方法现在都可以在任何地方使用。

于 2011-03-01T23:02:58.640 回答