Array.find()
позволяет выполнять последовательный поиск в массиве, но это плохо масштабируется.
Я бы порекомендовал, если вы имеете дело с большим количеством объектов или элементов, и они уникальны, тогда хэш будет намного лучше. Хэши разрешают индексированный поиск по ключу.
Поскольку вы сохраняете только уникальные идентификаторы, хорошим выбором будет либо Set, либо Hash:
mathimata.push(Mathima.new(id)) # if it's a new id, add it
Набор между массивом и хэшем. Это позволяет только уникальные записи в коллекции, так что это как эксклюзивный массив. Он не разрешает поиск / доступ по ключу, такому как Hash.
Кроме того, вы можете получить первые два слова более рубиноподобным способом:
array = line.split(' ') # i am reading a sorted file
id = array.delete_at(0) # i get the first two words as the id and tmima
tmima = array.delete_at(0)
обычно будет написано:
id, tmima = line.split(' ')[0, 2]
или
id, tmima = line.split(' ')[0 .. 1]