跳至內容

is_a?

虛擬方法 is_a? 用於判斷表達式的執行期型別是否繼承或包含另一個型別。 例如:

a = 1
a.is_a?(Int32)          # => true
a.is_a?(String)         # => false
a.is_a?(Number)         # => true
a.is_a?(Int32 | String) # => true

它是一個虛擬方法,因為編譯器知道它,並且它可以影響型別資訊,如 if var.is_a?(...) 中所述。 此外,它接受一個必須在編譯時已知的 型別 作為其引數。