0

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

基本上我只想搜索一个数字序列来寻找值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)
4

2 回答 2

1

我知道您说这是针对一个项目的,但是您有什么理由不使用本机索引方法吗?

dis = [0,2,5,1,8,9]
puts dis.index(9) #=> 5
puts dis.index(1) #=> 3
于 2013-08-10T06:41:56.107 回答
0

您应该调用linearsearchtype 的对象Array,而不是将数组作为参数传递。就目前而言,您正在调用linearsearchruby​​ 顶层,它是 的一个实例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)
于 2013-08-10T02:39:21.707 回答