class Array
def my_uniq(array_taken)
new_array=[]
array_taken.each do |element|
new_array << element unless arr.include(element)
end
end
end
Array.my_uniq([1,2,3,3])
我在终端中使用ruby calc1.rb来调用程序。终端位于正确的文件夹中,文件保存在正确的文件夹中。
输出
calc1.rb:9:in `<main>': undefined method `my_uniq' for main:Object (NoMethodError)
以前的答案似乎是关于在定义之前调用方法,或者对我来说,就像我调用类的解决方案一样,然后在数组上调用方法。这里有私人或未定义的方法吗?
答案 0 :(得分:3)
您需要创建方法作为要使用的类方法。但是您创建了该方法作为类Array
的实例方法并调用Array
类对象,而不是Array
的实例,因此您得到了错误。
以下工作:
class Array
def self.my_uniq(array_taken)
new_array=[]
array_taken.each do |element|
new_array << element unless new_array.include(element)
end
new_array
end
end
Array.my_uniq([1,2,3,3])
看一下这个错误,你似乎从顶层调用了方法my_uniq
。但在这种情况下,它也不会起作用,因为to self
是main
,Object
类的实例。但该方法未在Object
类中定义作为一个实例方法,所以来自toplevel的裸方法调用也行不通。
答案 1 :(得分:0)
这是我得到它的脚本,以防有人想知道
class Array
def self.my_uniq (array_taken)
new_array=[]
array_taken.each do |element|
new_array << element unless new_array.include?(element)
end
new_array
end
end
p Array.my_uniq([1,2,3,3,3])