【问题标题】:Which class get inherited when using nested class使用嵌套类时继承哪个类
【发布时间】:2017-02-25 22:49:33
【问题描述】:
class Admin::ApplicationController < ApplicationController
  def index
  end
end

当我使用嵌套类时,哪个类会被继承?

class Admin < ApplicationController
  class ApplicationController
  end
end

或

class Admin 
  class ApplicationController < ApplicationController
  end
end

我认为第二个是赢家,因为我理解Admin::ApplicationController &lt; ApplicationController 是在Admin 命名空间中获取ApplicationController 并使其继承自ApplicationController。

【问题讨论】:

    标签: ruby


    【解决方案1】:

    如果问题是这行的等价物:

    class Admin::ApplicationController < ApplicationController
    

    那么你的第二个假设是正确的,它相当于:

    class Admin 
      class ApplicationController < ApplicationController
      end
    end
    

    尽管有一些旁注:

    1. 您当前的设计暴露了错误的命名
    2. 为什么不将Admin 设为模块而不是类?
    3. 更喜欢使用显式形式而不是嵌套形式 - 您永远不会感到困惑。
    4. 请参阅this thread,了解两种形式的类定义之间嵌套级别的一些差异。

    【讨论】:

    • 谢谢,安德烈。我是 Rails 的新手。我正在阅读 Rails in Action 4。第一个代码块是书中的示例代码。我问这个问题的原因是 Rubocop 告诉我不要使用紧凑格式。
    • @LiXinyang 我不知何故错过了你的评论。我相信 Rubocop 的警告值得一听。很好,你正在使用它(我也这样做)
    猜你喜欢
    • 1970-01-01
    • 2011-06-19
    • 2019-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多