2013-08-10 1 views
0

연습용으로 작성한 간단한 코드를 테스트하기 위해 간단한 루비 코드를 작성하려고합니다. 나는 "linearsort.rb : 14 : <main>': undefined method main : Object (NoMethodError)"에 대해 linearsearch에 오류가 발생했습니다.Ruby 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) 
+2

참고로, 잘못된 행에는'nil'이 있습니다. 그 위에 '끝'을 놓으십시오. – squiguy

+0

네, 그게 큰 차이가 있습니다. 고마워요 squiguy –

답변

0

입력 Array의 객체에 linearsearch를 호출해야합니다 ... 도와주세요, 인수로 배열을 전달하지. 그대로 서면, Object의 인스턴스 인 루비 최상위 레벨에서 linearsearch을 호출하고 있으므로 정의 된 메소드가 없습니다. 그래서

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

같은 유형 Array의 객체에 호출 될 linearsearch를 변경 시도하고 나는이 프로젝트에 대해 말했다 알고

dis.linearsearch(9) 
+0

고마워! 귀하의 의견은 매우 도움이됩니다! –

1

처럼 호출하지만, 어떤 이유로 당신은 '있다 네이티브 인덱스 메소드를 사용하지 않습니까?

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

전혀 이유가 없습니다, 저는 Ruby를 처음 접했고 파이썬보다 조금 혼란 스럽습니다. 정말 고마워. –