为什么我创建这个类方法的Ruby代码不起作用?
Ruby n00b试图创建一个简单的方法来添加到Array类中,但是有相当大的困难。我试图编写一个方法,它不仅返回整数数组的最大值,还返回它出现的索引。这是我的密码:为什么我创建这个类方法的Ruby代码不起作用?,ruby,class,methods,nomethoderror,Ruby,Class,Methods,Nomethoderror,Ruby n00b试图创建一个简单的方法来添加到Array类中,但是有相当大的困难。我试图编写一个方法,它不仅返回整数数组的最大值,还返回它出现的索引。这是我的密码: class Array def self.maxplus(matrix) i = 0 maximum = 0 while i < matrix.length-1 if matrix[i] > maximum
class Array
def self.maxplus(matrix)
i = 0
maximum = 0
while i < matrix.length-1
if matrix[i] > maximum
maximum = matrix[i]
index = i
end
i += 1
end
puts index
puts maximum
end
end
我不知所措,一段时间以来一直试图在电脑上解决这个问题。非常感谢您的帮助和教育。您已经为
数组
类定义了一个静态方法,即数组.maxplus(matrix)
,但是您试图在数组的实例上调用它。所以,要么这样称呼它:
Array.maxplus(matrix)
或者将其作为实例方法:
class Array
def maxplus
i = 0
maximum = 0
while i < self.length-1
if self[i] > maximum
maximum = self[i]
index = i
end
i += 1
end
puts index
puts maximum
end
end
[1, 2, 3].maxplus
类数组
def maxplus
i=0
最大值=0
而我最大值
最大值=自身[i]
指数=i
结束
i+=1
结束
卖出指数
最大化
结束
结束
[1,2,3].maxplus
您确定正在调用数组上的maxplus
?或者这是数组的一个实例
?好吧,我可能真的很困惑。我希望能够创建自己的方法来调用任何返回最大值和索引的数组。i、 例如,如果A=[5,6],那么A.maxplus返回1和6。我该怎么做?Ed S,谢谢!我试图像上面那样定义方法,但我不知道如何使用“self”来引用我正在处理的矩阵!Ed,我知道你没有被要求改进代码,但值得注意的是,实例方法可以简化很多,例如,classarray;def maxplus;最大值=最大值;[指数(最大值),最大值];结束;end
,要调用的ndx,mx=[1,2,3]。maxplus#ndx=>2,mx=>3
。Ice,对于方法max
和index
,默认接收器为self
,因此无需明确引用self
。在上面的self.length
中也不需要self
,尽管在self[i]
和其他一些情况下需要它。@CarySwoveland:当然,在现实世界中,作为一种打印最大值的方法,它可能被简化为零,并且它的索引不是非常有用。我在length
中添加了self
只是为了进一步说明这一点,但你是对的,我不会在我自己的代码中使用它。
class Array
def maxplus
i = 0
maximum = 0
while i < self.length-1
if self[i] > maximum
maximum = self[i]
index = i
end
i += 1
end
puts index
puts maximum
end
end
[1, 2, 3].maxplus