我需要使用基於對象類型/類的簡單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?(矩陣)應該防止這個 –