2016-09-14 5 views
-1
people = {} 

def add 

    puts "Enter the name of the person you would like to add in the database." 
    name = gets.chomp.to_s 

    if people[name].nil? 

     puts "What is #{name}'s age?" 
     age = gets.chomp.to_i 

     people[name] = age.to_i 
end 

puts "Would you like to add?" 
choice = gets.chomp 

if choice == "yes" 
     add 
end 

end 

내 메소드 외부에있는 사람이 "추가"되었으므로 "정의되지 않은 지역 변수 또는 메소드 main : Object NameError) "Ruby에서 메소드에 변수를 호출하는 방법 (레일이 아님)

[이름] .nil 사람이 곧 오류가 발생합니다. 라인이 온다.

데이터베이스를 만들어야하는데, 업데이트 및 삭제와 같은 더 많은 방법이 있습니다.이 방법에서는 "사람"을 어떻게 사용합니까?

+3

:

바와 같이 theTinMan 지적, 올바른 솔루션은 함수에 people를 전달하여, 처음부터 글로벌 변수의 사용을 피할 수있는 방법으로 코드를 리팩토링하는 것입니다 d는 코드를 정확하게 들여 쓰기를 강력하게 제안합니다. 그것은 미래의 자신을 많은 고뇌로 구원 할 것입니다. –

답변

-1

전역 변수는 Ruby에서 $으로 시작해야하므로 people 대신 $people이 필요합니다. 또는 peopleadd 함수에 전달할 수 있습니다. 나는 '

def add(people) 
    ... 
+0

그냥 똑같은 오류가 계속 발생했습니다. – user3602045

+0

'add ': 정의되지 않은 지역 변수 또는 메소드'people'for main : Object (NameError) – user3602045

+0

'people'의 모든 인스턴스를'$ people'으로 대체 했습니까? – kfb