我需要add_student
将多个学生添加到数组grade
。该方法应该将多个学生添加到数组中,并将它们分配给grade
或哈希中的键。
class School
def initialize(name)
@name = name
end
def roster
@roster ||= {}
end
def add_student(student, grade)
roster[grade] = []
roster[grade] << student
end
def student_grade(grade)
return students
end
end
我不明白为什么add_student
不会添加多个参数。我收到一个错误,它只返回一个参数或nil
。
答案 0 :(得分:3)
Vutran的回答正确地识别了问题,但更好的解决方案是使用默认的proc来自动初始化哈希值中的任何缺失值。
class School
attr_reader :roster
def initialize(name)
@name = name
@roster = Hash.new {|h,k| h[k] = [] }
end
def add_student(student, grade)
roster[grade] << student
end
# ...
end
答案 1 :(得分:2)
每次添加学生时,都会重新初始化public class MyClass
{
public int myInt;
public MyClass( int i)
{
myInt = i;
}
}
void Start ()
{
MyClass myclass = new MyClass(1);
MyClass myOtherClass = //Should be equal to myClass BUT I want to use the string "myClass" to reference it.
}
到roster[grade]
,这会丢弃之前添加的所有学生。要解决此问题,您可能会更改:
[]
到
roster[grade] = []
这行代码执行以下工作:如果 roster[grade] ||= []
为roster[grade]
,则会将[]
初始化为roster[grade]
。