0

提供一些背景知識;在過去的幾個月裏,我一直在學習Ruby(已經閱讀了絕大多數Ruby基礎知識,完成了Poignant ruby​​指南,之後計劃閱讀Eloquent ruby​​)。我掌握了大部分概念,即Objects,Ruby內核(基礎知識),範圍,循環等等,但是,當把消息/方法發送到代碼時,我感到困惑。瞭解Ruby消息

讓我們使用這行代碼作爲一個例子:toolkit = Toolkit.get_default_toolkit

現在工具包是用於工具包對象的變量和get_default_toolkit是方法/消息。在大多數代碼中我發現模糊的是方法/消息沒有在任何地方定義。所以我的問題是,我們(rubyists)可以學習的核心消息/方法列表是否在基本級別上使用?

或者這些方法只是有很大的範圍,並在程序中的其他地方定義?

回答

6

這些方法是在類定義中定義的,因爲它們幾乎適用於所有語言。 get_default_toolkit並不是一些低級別的方法,您必須通過核心Ruby類來尋找,它是類Toolkit的一部分,它將被定義在哪裏定義類。

這樣的方法,象那些在KernelObject定義,但是get_default_toolkit不是它們中的一個。

對於任何給定的方法,您可以通過調用object.method('method_name').owner來確定定義了哪個類,或通過調用.source_location找出它的定義位置(文件/行號)。

現在工具箱是在工具包對象

措辭進行更好的方法這是toolkit是一個可變的變量,Toolkit是一個類,toolkit現在包含一個新的實例Toolkit

+0

真棒答案 - 投! – Apane101 2013-03-20 05:46:32

1

如果你想找到什麼方法調用,可用於對象或類,你可以調用它的

例如。方法

pp String.methods.sort 

thing = Array.new 
pp thing.methods.sort 

我喜歡稱他們與PP和排序,使他們在一個可讀的方式印刷