1

在 SO 和 Google 中搜索“ruby AboutClasses”都没有成功。

class Dog
end

fido = Dog.new
puts Dog.inspect
puts fido.inspect

结果是

AboutClasses::Dog
#<AboutClasses::Dog:0x6255f0>

你能解释一下吗:

  • 术语AboutClasses是什么?
  • 第二个结果中的符号#<xxxxx>。我知道这是一个实例,但为什么要放在它#<>周围呢?
4

1 回答 1

5

搜索 GitHub会产生一堆包含 的 Ruby 源文件require 'about_classes',它们都位于 ruby​​_koans 的分支中。

事实上,文件about_classes.rb文件包含一个名为 fido 的 Dog 类,位于名为AboutClasses. 我猜你已经加载了这个类或正在执行它。

要回答您关于以下方面的具体问题#<AboutClasses::Dog:0x6255f0>

  1. 术语“AboutClasses”只是一个类或模块名。您可以嵌套它们,以便外部类或模块充当命名空间。这样,您的 Dog 类就不会与您加载的其他 gem 中的 Dog 类发生冲突。嵌套它们时,名称由 . 分隔::

  2. 符号#<ClassName:MemoryAddress>只是一个符号。井号和尖括号只是为了将它与其他所有内容区分开来。

于 2012-05-17T17:42:03.710 回答