1

我需要使用基于对象类型/类的简单 if 语句。

我有一个自定义 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

这就是为什么我有这个 if 语句的原因。我也尝试过self.responds_to?(:number_of_cols)同样的elsif错误。

我总是可以制作两种方法,每种类型一种,但我也想了解为什么当有专门的助手喜欢is_a?responds_to?避免这些问题时这不起作用。

4

1 回答 1

2

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

于 2016-12-24T11:20:49.773 回答