2013-05-15 6 views
0

Я помню слова, указанные Matz: Ruby 1.8 скоро будет мертв. Но у меня нет выбора. Здесь я использую Ruby 1.8.7. Big Decimal ведет себя по-разному по сравнению с более поздней версией Ruby.Ruby 1.8 BigDecimal

Например:

ree-1.8.7-2011.12 :001 > require 'bigdecimal' 
=> true 
ree-1.8.7-2011.12 :002 > b=BigDecimal('0.0') 
=> #<BigDecimal:9ce7148,'0.0',4(8)> 
ree-1.8.7-2011.12 :003 > b 
=> #<BigDecimal:9ce7148,'0.0',4(8)> 
ree-1.8.7-2011.12 :004 > b==0 
=> true 

ree-1.8.7-2011.12 :005 > [b,b,0,0].uniq 
=> [#<BigDecimal:9ce7148,'0.0',4(8)>, #<BigDecimal:9ce7148,'0.0',4(8)>] #Integer 0 is removed 
ree-1.8.7-2011.12 :008 > [b,b,0,0].uniq.uniq 
=> [#<BigDecimal:9ce7148,'0.0',4(8)>] #Applying two times uniq gives desired result for given array 

Есть ли патч, чтобы исправить эту проблему? Извините, у меня нет возможности обновить Ruby. Любая помощь? Спасибо.

ответ

1

Вы можете попробовать https://github.com/marcandre/backports, который утверждает, что предоставляет «Последние функции Ruby, поддерживаемые более старыми версиями». Я ничего не видел о BigDecimal с первого взгляда, но кто знает, что он может использовать внутри. Я использовал его раньше для массивов, это, по крайней мере, стоит того.

Смежные вопросы