2012-10-18 20 views
5

Bir dosya yüklemek, içeriğini dizilere ayırmak ve sınıfın içeriğe uygulanmasını istiyorum. puts show() çizgidir hat 28 üzerinde Class (NoMethodError)Öğrenci için 'her' tanımlanmamış yöntem: Sınıf

:

class Student 
    def initialize(name, grade) 
     @name = name 
     @grade = grade 
     @grade = @grade.to_i 
     @newgrade = @grade*1.45 
    end 

    def show() 
     return "#{@name} ,#{@grade} , #{@newgrade}" 
    end 
end 

# Opening the file into an array 
arr = File.open("exam_results.txt", "r+") 
allStudents = Array.new 

for a in arr 
    b = a.split(",") 
    name = b[0] 
    score = b[1] 
    allStudents << Student.new(@name, @grade) 
end 

for i in Student 
    puts show() 
end 

Ben

tanımsız yöntem 'her' Öğrenci için alıyorum. Buna nasıl daha fazla dayanabileceğime dair ipuçları var mı?

cevap

3

Orada bir yazım hatası olduğunu düşünüyorum (diğer şeylerin yanı sıra). Bunu yapıyoruz:

for i in Student 
    puts show() 
end 

Açıkça, Student sınıfı yineleme bir koleksiyon değil. Eğer Temelde zaman yanlış yapıyorsun for i in Student

de üzerinde "Öğrenci" sınıfı değil Array/Koleksiyon nesne yineleme çalışıyoruz çünkü

allStudents.each do |student| 
    puts student.show 
end 
+0

gibi bir şey olmalı! :) – johk

2

: Ben ne yazmak gerekiyordu bu olduğunu düşünüyorum. Bunun yerine,

allStudents.each do |student| 
    puts student.show 
end 
+1

İlk oldum, mwahaha :) –

+0

+1^yorum :) için beni güldürdün. – ch4nd4n

+0

Eserleri harikalar, çok teşekkürler! :) – johk

İlgili konular