Нели обнови решението на 25.10.2012 21:54 (преди около 13 години)
Тази мутация names.uniq! ще ти струва точки по две причини. Първо, лошо е подравнена. Второ, мутация е.
.........F.
Failures:
1) Collection supports negation of filters
Failure/Error: filtered = collection.filter Criteria.artist('Sting') & !Criteria.name('Fields of Gold')
NoMethodError:
undefined method `type' for #<NegationCriteria:0x99113c0>
# /tmp/d20130203-23049-1m3hbbj/solution.rb:105:in `&'
# /tmp/d20130203-23049-1m3hbbj/spec.rb:78:in `block (2 levels) in <top (required)>'
# ./lib/homework/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
# ./lib/homework/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'
Finished in 0.01093 seconds
11 examples, 1 failure
Failed examples:
rspec /tmp/d20130203-23049-1m3hbbj/spec.rb:77 # Collection supports negation of filters
Тази мутация names.uniq! ще ти струва точки по две причини. Първо, лошо е подравнена. Второ, мутация е.
Може ли да получа жокер за each как да стане по-кратко?
Enumerable. Има го в слайдовете :)
Още не си оправила идентацията.
При filter връща обект с повторения. Мисля, че трябва да си предефинирам equ? за Songs, но не съм сигурна.
it "supports a negation of filters" do filtered = collection.filter !Criteria.artist('Sting') filtered.map(&:album).should eq ["Live at Blues Alley", "Portrait in Jazz", "Yield", "Ten", "One", "A Love Supreme", "Mysterioso"] end
Ето при този тест проблемът е, че разултата ми е ["Live at Blues Alley", "Live at Blues Alley", "Portrait in Jazz", "Yield", "Ten", "One", "A Love Supreme", "Mysterioso"]. Как трябва да премахна повторенията. Мислех , че с uniq и предефиниране на hash и equ? за Songs ще се изчистят повторенията, но сега осъзнавам, че няма да стане така.