Различия между Ruby 1.8 и 1.9 в сравнении элементов списка

Две версии Ruby: 1.8.7 (которую использует школа) и 1.9.3 (текущая версия, которая у меня есть в моей системе).

Просто любопытно, что изменилось в 1.9.3, из-за чего следующее не работает должным образом. Функция выводит true, если все элементы в списке одинаковые, false, если не все элементы одинаковы.

e.g.
[1,1,1] => true
[1,2,1] => false

В Ruby 1.9.4

odd_one_out_in_list?([1,1,1])
=> false  #which is should output 'true'

а в Ruby 1.8.7

odd_one_out_in_list?([1,1,1])
=> true  #which is good

Мне кажется, что приведенная ниже логика устраивает. Чем отличается 1.9.4? Я проверил: Что такое разница между Ruby 1.8 и Ruby 1.9, но я не могу найти там ответ.

Вот моя функция:

def odd_one_out_in_list?(list)
  sorted_list = list.sort
  if sorted_list[0] == sorted_list[list.length-1]
    return true
  else
    return false
  end
end

person Luigi    schedule 29.10.2012    source источник
comment
Кроме того, я не могу воспроизвести это. 1.8.7 и 1.9.3 дают мне те же результаты для предоставленных вами данных.   -  person Andrew Marshall    schedule 29.10.2012
comment
А почему бы просто не вернуть результат сравнения?   -  person Dave Newton    schedule 29.10.2012
comment
Попробуйте def odd_one_out_in_list?(list); list.uniq.size == 1; end. Проще и, наверное, быстрее.   -  person Guilherme Bernal    schedule 29.10.2012


Ответы (1)


Попробуйте def odd_one_out_in_list? (Список); list.uniq.size == 1; конец. Проще и, наверное, быстрее

person Community    schedule 31.03.2014