猴子修补时收到未定义的方法错误



我收到错误

`<main>': undefined method `my_uniq' for Array:Class (NoMethodError)

运行以下代码时

class Array
def my_uniq(array)
new_arr = []
array.each do |i|
if !new_arr.include?(i)
new_arr << i
end
end
return new_arr
end
end
test = Array.my_uniq([1,2,3])

任何帮助解决此问题将不胜感激。

如果你想写一个类方法,你必须用self来定义它,即def self.my_uniq

class Array
def self.my_uniq(array)
array.each_with_object([]) do |element, new_arr|
new_arr << element unless new_arr.include?(element)
end
end
end

对于类方法,类本身就是接收器:

Array.my_uniq([1, 1, 2, 3, 3, 1])
#=> [1, 2, 3]

如果要编写实例方法,请省略self和参数:

class Array
def my_uniq
each_with_object([]) do |element, new_arr|
new_arr << element unless new_arr.include?(element)
end
end
end

对于实例方法,该类的实例是接收器:

[1, 1, 2, 3, 3, 1].my_uniq
#=> [1, 2, 3]

最新更新