Ruby NoMethodError - 简单的搜索代码

时间:2013-08-10 00:21:05

标签: ruby nomethoderror

我正在尝试编写一些简单的Ruby代码来测试我为练习编写的伪代码。我在main:Object(NoMethodError)中遇到错误“linearsort.rb:14:in <main>': undefined method linearsearch”。

基本上我只想搜索一系列寻找值v的数字,如果是,则返回序列中的位置,如果不返回nil。

我已经回顾了几个包含相同错误的问题但是我没有发现任何可以从中吸取任何有意义的教训的问题。请帮忙......

class Array
    def linearsearch(a, v)
        0.upto(a.length-1) do |j|
            if a[j] == v
                j
            end
        nil
        end
    end
end

dis = [0,2,5,1,8,9]

print linearsearch(dis, 9)

2 个答案:

答案 0 :(得分:1)

我知道你说这是一个项目,但你有没有理由不使用本机索引方法?

dis = [0,2,5,1,8,9]
puts dis.index(9) #=> 5
puts dis.index(1) #=> 3

答案 1 :(得分:0)

您应该在linearsearch类型的对象上调用Array,而不是将数组作为参数传递。就目前而言,您在ruby顶级调用linearsearch,这是Object的一个实例,因此没有定义您的方法。尝试更改要在linearsearch类型的对象上调用的Array,如此

class Array
  def linearsearch(v)
    0.upto(self.length - 1) do |j|
      if self[j] == v
        return j
      end
    end
    nil
  end
end

并像

一样调用它
dis.linearsearch(9)