2016-09-14 8 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 

私のメソッド外の人が "add"してしまったので、 "未定義のローカル変数またはメソッドmain(Object: NameError) "Rubyでメソッドに変数を呼び出すにはどうすればいいですか?

[名前] .nilの人はすぐにエラーになりますか?ラインが来る。

私はデータベースを作成する必要があります。私は更新や削除などの方法がありますが、これらのメソッドの中で "人"をどのように使用/呼び出すのですか?

+3

私は」あなたのコードを正しくインデントすることを強くお勧めします。それはあなたの将来の自己を苦痛の多くを保存します。 –

答えて

-1

グローバル変数の先頭には、$というRubyが付いているので、peopleの代わりに$peopleが必要です。または機能にpeopleを渡すこともできます。

としてはtheTinManによって指摘、正しい解決策は、あなたの関数にpeopleに渡すことで、最初の場所でのグローバル変数の使用を避けるための方法でコードをリファクタリングすることです:

def add(people) 
    ... 
+0

そのまま試しても、まったく同じエラーが表示されます。 – user3602045

+0

'add ':未定義のローカル変数またはメソッド' people' for main:Object(NameError) – user3602045

+0

'people'のすべてのインスタンスを' $ people'に置き換えましたか? – kfb

関連する問題