2012-11-12 70 views
3

我已經開始學習Rails 3.0,並決定花一些時間學習Pure Ruby 1.9,並想知道是否有辦法查看對象類,因爲它始終可用。像是有一個命令,你可以鍵入IRB例如,將顯示對象類中的所有方法,如to_a,to_s等。感謝您的幫助如何查看對象類中的所有方法/屬性

回答

9

#methods是您想要的方法。它只是返回一個字符串數組,它是對象響應的所有方法的名稱。

Object.new.methods 

或者在IRB更具可讀性:

puts Object.new.methods.sort.to_yaml 

或爲類方法:

Object.methods 

一個警告,雖然,有些對象允許不會是方法在此列出。用#method_missing掛鉤實現的任何內容都不會顯示出來。這包括很多ActiveRecord方法以及其他rails對象。

但只要沒有棘手的事情發生,這是你似乎想要的列表。

+0

Niggle:''方法'返回一個符號數組,而不是字符串。 – cantlin

+0

在紅寶石1.8.7中,你會得到字符串,這是我最熟悉的。 –

+0

對thanx非常有幫助,認爲沒有人會理解我的問題,謝謝 –

3

要查看對象的方法,可以執行your_object.methods。對於一個類,這將是它的類方法。要查看課程的實例方法,您可以執行your_class.instance_methods。因此,要列出Object的所有類方法,您將執行Object.methods,並且要查看Object的所有實例方法,您應該執行Object.instance_methods

更多提示:如果您只想看到給定類實現的方法(不是從它的祖先繼承的方法),則可以將false作爲參數傳遞給前面提到的任一方法。因此,例如,String.instance_methods(false)將返回String實現的實例方法列表,但不會返回一般對象方法,如dupis_a?。但是,如果你想學習,查看給定類或類擴展的文檔(例如Rails添加到字符串或日期)可能會更好。

相關問題