跳到内容

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?(...) 中所述。此外,它接受一个 类型 作为参数,该类型必须在编译时已知。