我正在尝试编写一些简单的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)
答案 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)