在Ruby或Rails中,为什么有时在课堂上“包括”,有时候在课堂外?
我想
class ApplicationController < ActionController::Base include Foo
是添加“mixin” – 以便将Foo模块中的所有方法都视为ApplicationController的方法。
但现在我看到了代码
include Bar class ApplicationController < ActionController::Base include Foo
那为什么它在ApplicationController
之外呢? 这与将它放在ApplicationController
的更常见用法有什么不同?
是的,在类中include Foo
会将Foo
添加到该类的祖先,从而使所有Foo
的实例方法可用于这些类的实例。
在任何类定义之外include Foo
将Foo
添加到Object
的祖先。 也就是说,就像你在Object
类的定义中include Foo
一样。 这样做的用途是所有Foo
的实例方法现在都可用。