2012-05-17 35 views
1

搜索'ruby AboutClasses'不會在SO或Google中搜索到。在Ruby中,什麼是類AboutClasses?

class Dog 
end 

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

結果是

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

能否請你解釋一下:

  • 什麼術語AboutClasses是什麼?
  • 第二個結果中的符號#<xxxxx>。我知道這是一個實例,但爲什麼要把它放在#<>附近呢?
+0

你的開發環境是什麼?我無法在IRB中使用Mac OS X/ruby​​ 1.8 – CambridgeMike

+0

重現此版本Ruby的哪個版本?任何寶石安裝?以前沒見過這個。 –

+0

同上,無法在Mac OS X上重現Ruby 1.9 – benzado

回答

5

Searching GitHub產生一堆包含require 'about_classes',它們都在ruby_koans的叉Ruby源文件。

事實上,文件about_classes.rb文件包含一個名爲fido的Dog類,該類名爲AboutClasses。我猜你已經加載了這個類或正在執行它。

爲了回答您的具體問題有關#<AboutClasses::Dog:0x6255f0>

  1. 術語「AboutClasses」僅僅是一個類或模塊的名稱。你可以將它們嵌套在一起,這樣外層類或模塊就像一個名字空間一樣。這樣,您的Dog類不會與您加載的其他寶石中的Dog類發生衝突。當您嵌套它們時,名稱由::分隔。

  2. 符號#<ClassName:MemoryAddress>只是一個符號。哈希標記和尖括號只是將它與其他所有內容區別開來。

+0

現在我知道AboutClasses是我正在工作的班級,所有關於我的問題的所有內容都是有道理的。感謝您的及時回覆。Ruby社區非常棒,我很高興能夠登上 – Will

+0

@ WilliamSmith我很樂意提供幫助,我注意到你已經提出了幾個問題,但沒有將任何答案標記爲「已接受」;請查看[Stack Overflow FAQ](http://stackoverflow.com/faq# howtoask)看看網站是如何工作的,並且歡迎您! – benzado

+0

我登錄到meta SO,並且瞭解了更多關於接受問題的知識,然後我照顧了我仍然開放的問題,感謝您幫助我解決問題速度。 – Will