2013-09-21 82 views
0

我是一個Rubywan,所以我還是新來的。任何建議將非常有幫助!目前正在研究解決方法和哈希。我試圖訪問哈希名爲學校,但不斷提出一個NameError。更具體地講,這是錯誤(後跟正試圖訪問的散列方法):試圖訪問哈希方法,但不斷得到NameError

test.rb:19:in `student_grade': undefined local variable or method `school' for main:Object (NameError). 

def student_grade(student_name) 
    student = school[:students].select do |student| 
    if student[:name] == student_name 
     student_grade = student[:grade] 
     puts student_grade 
    else 
     puts "Student doesn't exist!" 
    end 
    end 
end 

回答

2

school局部變量的方法的範圍之外創建的(方法都有其自己的局部變量的範圍)。因此,您無法訪問方法student_grade中的內容。作爲一個例子見下圖:

hsh = {:a => 1} 
def foo 
    hsh 
end 
foo 
# undefined local variable or method `hsh' for main:Object (NameError) 

訪問,你必須如下傳遞:

hsh = {:a => 1} 
def foo(hsh) 
    hsh 
end 
foo(hsh) # => {:a=>1} 

要了解更多有關局部變量的範圍在這裏看到:Scope of local variable

+0

有可能該OP正在寫一個簡單的類,並可以使用實例變量'@學校' –

+0

@NeilSlater你是對的! –