Я работаю над сценарием, чтобы получить комментарии для субредита, выделить отдельные слова, сосчитать их и отсортировать. Примерно в 70% случаев я получаю эту ошибку:
in `<main>': undefined method `map' for nil:NilClass (NoMethodError) Did you mean? tap
Примерно в 30% случаев сценарий работает как задумано. Почему это происходит? И как бы вы решили? Я новичок в программировании, поэтому не удивлюсь, если проблема будет основной. Вот мой код:
require 'net/http'
require 'rubygems'
require 'json'
# Pull json file, parse out comments
url = 'https://www.reddit.com/r/askreddit/comments.json?sort=top&t=all&limit=100'
uri = URI(url)
response = Net::HTTP.get(uri)
json = JSON.parse(response)
comments = json.dig("data", "children").map { |child| child.dig("data", "body") }
#Split words into array
words = comments.to_s.split(/[^'\w]+/)
words.delete_if { |a,_| a.length < 5}
#count and sort words
count = Hash.new(0)
words.each { |word| count.store(word, count[word]+1)}
count.delete_if { |_,b| b < 4}
sorted = count.sort_by { |word,count| count}.reverse
puts sorted