Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Ruby: Общие вопросы > Max_by не пашет


Автор: Liza1700 23.6.2009, 19:11
Такой вопросик, нужно определить максимальное большое слово (вытащить из массива) 
Я пишу

Код

puts "type values" 
 a = gets.strip.split(' ') 


b = a.max_by{ |x| x.size}
  puts " #{b}"


Результат - undefined method `max_by' for ["some", "some2" ] :Array (NoMethodError)

Потом почитала, что max_by ввели относительно недавно... а моя версия интерпретатора 1.8.6 

Тогда в чем же ошибка? или если можно как то заменить max_by то как?

Автор: GrayCardinal 23.6.2009, 20:06
Liza1700, 
Код

max = 0
a.each { |one| 
  max = one if one.size > max
}

результ в max

Автор: Liza1700 23.6.2009, 20:25
Спасибо что откликнулись)

Но к сожалению, что то он опять ругается(как я поняла вы попытались идентифицировали max=0)

Вот ошибка:
comparison of Fixnum with String failed (ArgumentError)

Автор: shine 23.6.2009, 21:17
Сортируем по возрастанию длины и берем последний - самый длинный - элемент массива:
Код

a.sort_by{|item| item.size}.last

Автор: Liza1700 23.6.2009, 22:32
Как мне жаль, что у меня нету 100 постов , я бы с удовольствием вам поставила + !!!!

Огромное спасибо!!!Все заработало!!! ^^ 

Автор: GrayCardinal 24.6.2009, 11:05
Liza1700, 
Ступил. Писал на коленке  smile 

Автор: fixxer 25.6.2009, 15:55
Enumerable#max может брать блок, в доках есть http://www.ruby-doc.org/core/classes/Enumerable.html#M003165.

Автор: Liza1700 25.6.2009, 16:28
Спасибо, посмотрела ) ^^

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)