Решение на Втора задача - хешове, масиви и структура от Христо Христов
Резултати
- 5 точки от тестове
- 0 бонус точки
- 5 точки общо
- 12 успешни тест(а)
- 3 неуспешни тест(а)
Код
Лог от изпълнението
......FF.....F.
Failures:
1) Task 2 Hash#fetch_deep does not modify the input hash
Failure/Error: input.fetch_deep('menu.order')
NoMethodError:
undefined method `to_sym' for 3:Fixnum
# /tmp/d20161024-13689-jzz5mf/solution.rb:36:in `block in when_is_string'
# /tmp/d20161024-13689-jzz5mf/solution.rb:36:in `each'
# /tmp/d20161024-13689-jzz5mf/solution.rb:36:in `map'
# /tmp/d20161024-13689-jzz5mf/solution.rb:36:in `when_is_string'
# /tmp/d20161024-13689-jzz5mf/solution.rb:44:in `fun'
# /tmp/d20161024-13689-jzz5mf/solution.rb:28:in `when_is_symbol'
# /tmp/d20161024-13689-jzz5mf/solution.rb:37:in `when_is_string'
# /tmp/d20161024-13689-jzz5mf/solution.rb:44:in `fun'
# /tmp/d20161024-13689-jzz5mf/solution.rb:52:in `fetch_deep'
# /tmp/d20161024-13689-jzz5mf/spec.rb:102:in `block (3 levels) in <top (required)>'
# ./lib/language/ruby/run_with_timeout.rb:7:in `block (3 levels) in <top (required)>'
# ./lib/language/ruby/run_with_timeout.rb:7:in `block (2 levels) in <top (required)>'
2) Task 2 Hash#fetch_deep can fetch integer-like keys from hashes
Failure/Error: expect(input.fetch_deep('nested.2')).to eq :b
expected: :b
got: nil
(compared using ==)
# /tmp/d20161024-13689-jzz5mf/spec.rb:112:in `block (3 levels) in <top (required)>'
# ./lib/language/ruby/run_with_timeout.rb:7:in `block (3 levels) in <top (required)>'
# ./lib/language/ruby/run_with_timeout.rb:7:in `block (2 levels) in <top (required)>'
3) Task 2 Hash#reshape does not modify the input hash
Failure/Error: input.reshape(shape)
NoMethodError:
undefined method `to_sym' for 3:Fixnum
# /tmp/d20161024-13689-jzz5mf/solution.rb:36:in `block in when_is_string'
# /tmp/d20161024-13689-jzz5mf/solution.rb:36:in `each'
# /tmp/d20161024-13689-jzz5mf/solution.rb:36:in `map'
# /tmp/d20161024-13689-jzz5mf/solution.rb:36:in `when_is_string'
# /tmp/d20161024-13689-jzz5mf/solution.rb:44:in `fun'
# /tmp/d20161024-13689-jzz5mf/solution.rb:28:in `when_is_symbol'
# /tmp/d20161024-13689-jzz5mf/solution.rb:37:in `when_is_string'
# /tmp/d20161024-13689-jzz5mf/solution.rb:44:in `fun'
# /tmp/d20161024-13689-jzz5mf/solution.rb:52:in `fetch_deep'
# /tmp/d20161024-13689-jzz5mf/solution.rb:69:in `block in value_modifier'
# /tmp/d20161024-13689-jzz5mf/solution.rb:66:in `each'
# /tmp/d20161024-13689-jzz5mf/solution.rb:66:in `map'
# /tmp/d20161024-13689-jzz5mf/solution.rb:66:in `value_modifier'
# /tmp/d20161024-13689-jzz5mf/solution.rb:77:in `reshape'
# /tmp/d20161024-13689-jzz5mf/spec.rb:194:in `block (3 levels) in <top (required)>'
# ./lib/language/ruby/run_with_timeout.rb:7:in `block (3 levels) in <top (required)>'
# ./lib/language/ruby/run_with_timeout.rb:7:in `block (2 levels) in <top (required)>'
Finished in 0.00848 seconds
15 examples, 3 failures
Failed examples:
rspec /tmp/d20161024-13689-jzz5mf/spec.rb:99 # Task 2 Hash#fetch_deep does not modify the input hash
rspec /tmp/d20161024-13689-jzz5mf/spec.rb:108 # Task 2 Hash#fetch_deep can fetch integer-like keys from hashes
rspec /tmp/d20161024-13689-jzz5mf/spec.rb:180 # Task 2 Hash#reshape does not modify the input hash
История (5 версии и 3 коментара)
Христо обнови решението на 22.10.2016 18:57 (преди около 9 години)
Христо обнови решението на 22.10.2016 19:02 (преди около 9 години)
Причината за грозотията на 18 ред е, че стиловата проверка на сайта определя съответната функция като 9 реда дълга, но 2 от тези редове са всъщност редове само и единствено с end, което според http://fmi.ruby.bg/tasks/guide не би трябвало да се брои за такъв.
Ако оплакването ми е невалидно моля да бъда информиран (:
👍 Броят се. Трябва да е, че def/end не се броят.
пс. има какво да оправяш за да е по-кратко/четимо
Да, rubocop брои и end за ред. Това в гайда е останало от миналата година, когато използвахме друг tool. Ръководството е в грешка тук.
Нашето решение има по максимум 4 реда в метод - помисли как можеш да реорганизираш нещата, така че да не се налагат толкова много случаи. Например, ако сложиш метод fetch_deep в Array можеш да си спестиш проверките дали нещото е Hash или Array и дали е число или стринг. :)
