我收到了错误
`<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])
非常感谢任何帮助解决这个问题。
答案 0 :(得分:1)
如果您想要编写类方法,则必须使用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]