新手问题 一个 class 类名的问题

newnewnew · 2013年02月23日 · 最后由 newnewnew 回复于 2013年02月25日 · 2562 次阅读

看 ruby-china 源码时看到在 app/controllers/cpanel/application_controller.rb 种这样定义一个类:

class Cpanel::ApplicationController < ApplicationController
...
end

在类名中直接加入了双冒号 是不是就等于下面的代码

module Cpanel
  class ApplicationController < ApplicationController
    ...   
  end
end

还是说 Cpanel::ApplicationController 单纯只是个完整的类名?

等同于

module Cpanel
  class ApplicationController < ApplicationController
  end
end

@yesmeck 啊啊啊 谢谢你如此神速的回复 我还想问一个问题 在 ``里打代码怎么换行的呢?我用`` 只能打单行的代码😢

#2 楼 @newnewnew 末位加两个空格,然后回车试试

#2 楼 @newnewnew 多行代码使用三个 ```. FYI: 按 "M" 键查看更多帮助。

学习 Rails 之前为什么不先学习 Ruby?这是 Ruby 的基础中的基础啊

@neverlandxy_naix 我买了本 O'Relly 的 ruby 语言入门看完了 但是没看到这个知识点 额 慢慢积累

#7 楼 @newnewnew 那本书讲的太简单了,建议学习《Ruby Programming——向 Ruby 之父学程序设计》这本书

#1 楼 @yesmeck #5 楼 @newnewnew 不是完全等同的。

#9 楼 @zgm 有什么区别吗?

@zgm @Tony612 以前 hack 类的时候也发现重新打开时加::和一层一层打开不一样,不过没深究,应该是 ruby bug 吧

@neverlandxy_naix thx 我果断当当了 @zgm 啊,求详解啊

区别在于 如果 Cpanel 不存在 class Cpanel::ApplicationController < ApplicationController 这个会出错 而

module Cpanel
  class ApplicationController < ApplicationController

不会

前者在 rails 环境中,对文件路径有约定,必须是 cpanel/application_controoler.rb,后者无所谓,适合做补丁的场景。

@rainchen 太感谢了,又长见识了!😄

需要 登录 后方可回复, 如果你还没有账号请 注册新账号