Ruby对象初始化

时间:2016-10-05 04:26:15

标签: ruby class initialization

所以我编写了这段代码,当我将学生放在课堂外并将参数学生传递给搜索时,它就有效。但是,当我试图像这样运行时,它说学生是未定义的。我觉得我应该使用初始化方法,但我无法弄清楚如何在这种情况下使用它

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")

2 个答案:

答案 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