所以我编写了这段代码,当我将学生放在课堂外并将参数学生传递给搜索时,它就有效。但是,当我试图像这样运行时,它说学生是未定义的。我觉得我应该使用初始化方法,但我无法弄清楚如何在这种情况下使用它
class Student
def search(name)
i = 0;
students = [
{:firstname => "John", :lastname => "LastnameJohn", :phonenumber => 123456789},
{:firstname => "Ken", :lastname => "Lastnameken", :phonenumber => 456734244},
{:firstname => "Marisa", :lastname => "lastnamemarisa", :phonenumber => 443234567},
{:firstname => "Ken", :lastname => "Kenlastname", :phonenumber => 456734244}
]
while i < students.length
if(students[i][:firstname] == name)
puts students[i]
end
i = i + 1;
end
end
end
a = Student.new
a.search("John")
答案 0 :(得分:0)
你不应该在方法中定义类似的列表。您应该传入它们,或者您应该在另一个类或模块中定义它们。
例如:
select
这会使用Enumerable方法shared_ptr< BOOST_LOG_FILE_SINK_FRONTEND_INTERNAL< sinks::text_file_backend > >
过滤掉您感兴趣的行,而不是原始代码。
答案 1 :(得分:0)
您的计划是正确的。我运行时没有收到任何错误消息。但是,由于students
永远不会更改其值,我会将其定义为类的常量成员:
class Student
STUDENTS = [ .... ]
def search(name)
.... # do something with STUDENTS
end
end