Хорошо, я ЗНАЮ, что я просто делаю что-то глупое, но я просто не могу заставить это работать.
У меня есть объект возможности
class Opportunity
attr_accessor :effort
attr_accessor :value
def initialize(effort,value)
# set values to 1 + the Rayleigh distribution (rounded)
@effort = 1 + (effort * Math.sqrt(0-2*Math.log(1-rand()))).round
@value = 1 + (value * Math.sqrt(0-2*Math.log(1-rand()))).round
end
end
Я помещаю эти наборы в массив (это свойство другого объекта), а затем хочу отсортировать их по определенным свойствам (например, усилию)
# Order the working backlog
# (see https://ruby-doc.org/core-2.4.3/Array.html#method-i-sort_by-21)
puts workingBacklog.backlog[0].effort
workingBacklog.backlog.sort_by! {|opA,opB| opA.effort <=> opB.effort }
Вот пример вывода ...
6
3cmc.rb:57:in `block (2 levels) in <main>': undefined method `effort' for
nil:NilClass (NoMethodError)
from 3cmc.rb:57:in `each'
from 3cmc.rb:57:in `sort_by'
from 3cmc.rb:57:in `sort_by!'
from 3cmc.rb:57:in `block in <main>'
from 3cmc.rb:51:in `each'
from 3cmc.rb:51:in `<main>'
Так что я ЗНАЮ, что там есть массив объектов, отличных от NULL, потому что «6» в первой строке вывода не равен NULL. Но сразу после этого похоже, что колеса пословиц отрываются. Что, черт возьми, здесь происходит?