我需要使用基于对象类型/类的简单if语句。关于对象类型的条件
我有一个自定义数组类和一个矩阵类。 Array类的元素没有一个number_of_cols
属性
def method(other)
if self.is_a?(Array)
c = self.class.zeros(shape[0], shape[1])
elsif self.is_a?(Matrix)
c = self.class.zeros(number_of_rows, other.number_of_cols)
end
end
但是,运行这个时候,我得到一个错误:
undefined method 'number_of_cols' for Array
这是exactyle为什么我有这样的if语句。 我也尝试self.responds_to?(:number_of_cols)
在elsif
但同样的错误。
我总是可以制作两种方法,每种类型一种,但我还想了解为什么在专门的帮助工具(如is_a?
和responds_to?
)中不起作用以避免这些问题。
你试过'self.number_of_rows'吗? – asterite
是的,我得到:'未定义的方法'number_of_rows'为Array'。 它不应该去那里,因为它不是一个矩阵,self.is_a?(矩阵)应该防止这个 –