2016-12-24 49 views
1

我需要使用基於對象類型/類的簡單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?)中不起作用以避免這些問題。

+0

你試過'self.number_of_rows'嗎? – asterite

+0

是的,我得到:'未定義的方法'number_of_rows'爲Array'。 它不應該去那裏,因爲它不是一個矩陣,self.is_a?(矩陣)應該防止這個 –

回答

2

您在致電other.number_of_cols,但您尚未確定otherMatrix,只有self是一個。

+0

正確的感謝修復它,但因爲我從來沒有把自己稱爲矩陣我沒有想到由於這個條件不被滿足,它運行這個塊。 –