2017/10/19

Ruby - debug 方法

查詢繼承關係

File.ancestors
# [File, IO, File::Constants, Enumerable, Object, Kernel, BasicObject]

從物件找方法

# 查 File 的類別方法
File.methods

# 查 File 的實體方法
File.instance_methods

# 查 File 的實體方法
File.new('/').methods

# 取得繼承樹上所有的方法
File.methods(true)

# 只取得屬於 File 的方法
File.methods(false)

從方法找定義

File.method(:read)
# #Method: File(IO).read

IO.method(:read)
# #Method: IO.read

IO.method(:read).source_location
# nil

因為 IO.read 的定義是寫在 c 語言,所以就不顯示了。

參考文件

為什麼File.method(:read)是nil:https://ja.stackoverflow.com/questions/5755/ruby-file-read-%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89%E3%81%AE%E8%AA%AC%E6%98%8E%E3%82%92api%E3%83%89%E3%82%AD%E3%83%A5%E3%83%A1%E3%83%B3%E3%83%88%E3%81%A7%E8%AA%BF%E3%81%B9%E3%81%9F%E3%81%84

沒有留言: