【问题标题】:Undefined method 'each' for Student:ClassStudent:Class 的未定义方法“每个”
【发布时间】:2012-10-18 08:05:58
【问题描述】:

我想加载一个文件,将其内容拆分为数组,并将类应用于该内容。

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

我来了

Student:Class 的未定义方法 'each' (NoMethodError)

在第 28 行,即puts show() 行。关于我如何进一步了解这一点的任何线索?

【问题讨论】:

    标签: ruby arrays class nomethoderror


    【解决方案1】:

    我认为你有一个错字(除其他外)。你正在这样做:

    for i in Student
      puts show()
    end
    

    显然,Student 类不是可以迭代的集合。我想,你的意思是这样写的:

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

    【讨论】:

      【解决方案2】:

      那是因为您试图在 for i in Student 处迭代“Student”类而不是 Array/Collection 对象

      基本上你做错了。它应该类似于

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

      【讨论】:

        猜你喜欢
        • 2013-01-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-07
        • 2015-07-02
        • 2013-04-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多