Давайте посмотрим на эту строку кода:
hackerrank.keep_if { |key, value| key is_a? Integer }
Причина, по которой key
рассматривается здесь как метод, заключается в том, что при вызове метода в Ruby допускается пропуск круглых скобок.
Таким образом, приведенный выше код фактически интерпретируется следующим образом:
hackerrank.keep_if { |key, value| key( is_a?( Integer) ) }
отсюда сообщение об ошибке о неопределенном методе 'ключ':
myfile1.rb: 13: in 'block in': неопределенный метод 'key' для main: Object (NoMethodError)
Поставить "." за key
подразумевается объект, вызывающий метод is_a?
. Как это:
hackerrank.keep_if { |key, value| key.is_a? Integer }
Это должно исправить вашу проблему.