Ошибка NoMethodError в программе Ruby

#ruby

#ruby

Вопрос:

Я ОЧЕНЬ новичок в Ruby, поэтому, пожалуйста, простите меня. Я создал метод funny_sort, который естественным образом сортирует массив, а затем возвращает новый массив,

 def funny_sort(the_array)
    the_array = new_array.each {|s| s.gsub /D/, ""}
    the_array = new_string.each{|s| s.to_i}
    the_array = new_string.sort_by{|s| s.gsub /D/, ""}
    return the_array
end

    w = ['app100le', 'car10rot', 'banana']
puts w.funny_sort
  

но когда я запускаю программу в командной строке с Ruby и Rails, я получаю следующую ошибку:

 sort.rb:10in '<main>': private method 'funny_sort' called for ["app1001e", "carrot10", "banana"]:Array <NoMethodError>
  

Что я делаю не так?

Спасибо!

Ответ №1:

Вы пытаетесь вызвать его для массива, вместо того, чтобы передавать ему массив.

 funny_sort w  # Or with parens...
funny_sort(w)
  

Однако у вас может возникнуть другая проблема с этим new_array и new_string там, и я подозреваю, что это .each возвращает не то, что, по вашему мнению, оно делает.