Source From Here
Preface
如果想知道實例上有哪些方法可以使用,可以有幾個方法:
檢視物件
取得的清單預設包括類別上定義的實例方法與物件本身的單例方法,呼叫如果給定一個 false,表示僅取得物件本身的方法,也就是 單例方法。例如:
Object 繼承自 BasicObject,並含括了 Kernel 模組的 private 實例方法(也就是那些頂層方法),沒有自已定義 private 或 protected 實例方法,如果想得知物件上的單例方法,可以使用singleton_methods 方法:
想要快速得知物件上是不是有某些方法,可以在取得清單之後使用 include?,或者是使用 grep 配合規則表示式(Regular expression)。例如:
如果使用 respond_to? 查詢物件是否對某訊息回應,只有 public 方法才會傳回 true,protected 或 private 方法會傳回 false。
對於類別或模組本身定義的實例方法,可以使用以下幾個方法取得清單:
同樣地,如果呼叫方法時加上 false,表示僅取得類別或模組中定義的實例方法,排除繼承或含括而來的實例方法。例如:
其實 instance_methods 與該類別 new 出來的物件上的 methods 的內行應該是一樣的:
想得知類別或模組本身定義的類別或模組方法,可以使用以下兩個方法取得清單:
如果想取得實例化物件的類別,可以使用 class 方法,如果想知道類別的父類別,可以使用 superclass 方法,如果想取得物件的單例類別,可以使用 singleton_class。
如果想知道目前的 區域或全域變數清單,可以使用 local_variables 與 global_variables 方法,如果想知道物件的實例變數,可以使用 instance_variables 方法,如果想知道類別或模組變數,可以使用 class_variables 方法。例如:
想得知變數是哪個範圍的變數,可以使用 defined? 方法:
如果想取得某個類別的所有實例,可以透過 ObjectSpace。例如:
Preface
如果想知道實例上有哪些方法可以使用,可以有幾個方法:
檢視物件
取得的清單預設包括類別上定義的實例方法與物件本身的單例方法,呼叫如果給定一個 false,表示僅取得物件本身的方法,也就是 單例方法。例如:
Object 繼承自 BasicObject,並含括了 Kernel 模組的 private 實例方法(也就是那些頂層方法),沒有自已定義 private 或 protected 實例方法,如果想得知物件上的單例方法,可以使用singleton_methods 方法:
想要快速得知物件上是不是有某些方法,可以在取得清單之後使用 include?,或者是使用 grep 配合規則表示式(Regular expression)。例如:
如果使用 respond_to? 查詢物件是否對某訊息回應,只有 public 方法才會傳回 true,protected 或 private 方法會傳回 false。
對於類別或模組本身定義的實例方法,可以使用以下幾個方法取得清單:
同樣地,如果呼叫方法時加上 false,表示僅取得類別或模組中定義的實例方法,排除繼承或含括而來的實例方法。例如:
其實 instance_methods 與該類別 new 出來的物件上的 methods 的內行應該是一樣的:
想得知類別或模組本身定義的類別或模組方法,可以使用以下兩個方法取得清單:
如果想取得實例化物件的類別,可以使用 class 方法,如果想知道類別的父類別,可以使用 superclass 方法,如果想取得物件的單例類別,可以使用 singleton_class。
如果想知道目前的 區域或全域變數清單,可以使用 local_variables 與 global_variables 方法,如果想知道物件的實例變數,可以使用 instance_variables 方法,如果想知道類別或模組變數,可以使用 class_variables 方法。例如:
想得知變數是哪個範圍的變數,可以使用 defined? 方法:
如果想取得某個類別的所有實例,可以透過 ObjectSpace。例如:
沒有留言:
張貼留言