在条件对象的类型(Condition over object's type)

2019-09-30 11:22发布

我需要的,如果根据对象的类型/类的语句使用简单。

我有一个自定义的Array类和Matrix类。 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? 为了避免这些问题。

Answer 1:

你打电话other.number_of_cols但是你有没有保证other是一个Matrix ,只有self一个。



文章来源: Condition over object's type