Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 猴子补丁时收到未定义的方法错误_Ruby - Fatal编程技术网

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

Ruby 猴子补丁时收到未定义的方法错误,ruby,Ruby,我得到了错误的答案 `:数组的未定义方法“my_uniq”:类(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.m

我得到了错误的答案

`:数组的未定义方法“my_uniq”:类(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])
类数组
def my_uniq(阵列)
新的_arr=[]
array.each do|i|
如果!新协议包括?(i)

new\u arr如果要编写类方法,必须使用
self
定义它,即
def self.my\u 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
如果要编写实例方法,请省略
self
和参数:

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

不要定义参数并在方法中使用
self
,然后可以调用
[1,2,3]。my_uniq
感谢您的回复。我将进一步阅读类方法/实例方法之间的区别。我很感激你为我指明了正确的方向。干杯。
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]