2013-10-09 4 views
3

Код ниже не работает в лабораториях repl.it и codeacademy, но когда я выбираю длину ключа < 8, он работает. Ни одна длина ключа не терпит неудачу в irb.есть ли ограничение символов для хеш-ключей?

Это просто проблема с веб-REPL, или существует реальное ограничение длины ключа?

class Fixnum 

    def in_words 
     words = 
     { 
      100000000 => "trillion" 
     } 
     puts words[self] 
    end 

end 

100000000.in_words 
+0

Является ли '100000000' триллион? И BTW, лучше писать большие числа с '_':' 1_000_000_000_000' - это триллион, а с ним у вас возникла проблема, не так ли? –

+0

Да, это намного меньше, чем триллион. Любые цифры, включая символы подчеркивания, и ошибка – dwilbank

+1

@dwilbank, что вы используете? IRB отлично работает с Ruby 2.0.0-p247 и версией IRB irb 0.9.6 (09/06/30), как и Pry версии 0.9.12.2 на Ruby 2.0.0. – vgoff

ответ

1

В консоли все правильно, поэтому я считаю, что это РЕПЛ проблема

2.0.0p247 :001 > words = {100000000 => "trillion"} 
=> {100000000=>"trillion"} 
2.0.0p247 :002 > words[100000000] 
=> "trillion" 

В самом деле хэшей, не используйте клавиши, как есть, но их хеш-сумма

2.0.0p247 :011 > 100000000.hash 
=> -2175987708688930977 
2.0.0p247 :012 > 1.hash 
=> 4338493366955093097 

Так что все ключи имеют такую ​​же длину в этом смысле.

+0

Спасибо. И здорово. Теперь я должен найти еще один REPL. – dwilbank

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