在 Ruby 中,“class ClassName <”这一行代表什么?基地”在此上下文中的意思

发布于 2024-11-28 17:36:45 字数 200 浏览 1 评论 0 原文

给定代码,

require 'gdata'

class Contacts
  class Gmail < Base

当我们说“< Base”时,它意味着什么?它是否意味着从模块 gdata 中定义的 Base 类继承,在这种情况下,不会与可能需要的其他模块发生冲突。

或者还有别的意思吗?

Given the code

require 'gdata'

class Contacts
  class Gmail < Base

What does it mean when we say "< Base", does it mean inheriting from the Base class defined in the module gdata, in that case wouldn't there be a conflict with some other module that may be required too.

Or does it mean something else?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

听风念你 2024-12-05 17:36:45

基数没有特殊含义。

ruby-1.9.2-p180 :001 > Base.inspect
NameError: uninitialized constant Object::Base

除非在 gdata 中定义了名为 Base 或 Contacts::Base 的类,否则该示例应该生成错误。

class Base
  def self.hello
    "oh hi!"
  end
end

class Base2
  def self.hello
    "ahoy!"
  end
end

class Contacts
  class Base
    def self.hello
      "hi 2 u"
    end
  end
  class Gmail < Base
  end
  class Gmail2 < Base2
  end
end

ruby-1.9.2-p180 :024 > Base.hello
 => "oh hi!" 
ruby-1.9.2-p180 :025 > Contacts::Gmail.hello
 => "hi 2 u" 
ruby-1.9.2-p180 :026 > Contacts::Gmail2.hello
 => "ahoy!" 

Base has no special meaning.

ruby-1.9.2-p180 :001 > Base.inspect
NameError: uninitialized constant Object::Base

Unless a class called Base or Contacts::Base is defined in gdata, that example should generate an error.

class Base
  def self.hello
    "oh hi!"
  end
end

class Base2
  def self.hello
    "ahoy!"
  end
end

class Contacts
  class Base
    def self.hello
      "hi 2 u"
    end
  end
  class Gmail < Base
  end
  class Gmail2 < Base2
  end
end

ruby-1.9.2-p180 :024 > Base.hello
 => "oh hi!" 
ruby-1.9.2-p180 :025 > Contacts::Gmail.hello
 => "hi 2 u" 
ruby-1.9.2-p180 :026 > Contacts::Gmail2.hello
 => "ahoy!" 
蓝颜夕 2024-12-05 17:36:45

Gmail 类只是一个普通的嵌套类定义,它恰好是 Base 的子类。显然 Base 是在文件 gdata 中的某处定义的,但没有任何地方说 gdata 是 Ruby 模块,并且,如果它是一个模块,您没有显示它被混合到(使用 includeContacts,所以我不确定是否存在任何冲突担心。

The class Gmail is just a normal nested class definition, that happens to be a subclass of Base. Apparently Base is defined somewhere in the file gdata but nowhere does it say that gdata is a Ruby module and, if it were a module, you did not show it being mixed into (with include) Contacts so I'm not sure there are any conflicts to worry about.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文