Решение на Втора задача - хешове, масиви и структура от Христо Христов
Резултати
- 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 (преди около 8 години)
Христо обнови решението на 22.10.2016 19:02 (преди около 8 години)
Причината за грозотията на 18 ред е, че стиловата проверка на сайта определя съответната функция като 9 реда дълга, но 2 от тези редове са всъщност редове само и единствено с end, което според http://fmi.ruby.bg/tasks/guide не би трябвало да се брои за такъв.
Ако оплакването ми е невалидно моля да бъда информиран (:
👍 Броят се. Трябва да е, че def/end
не се броят.
пс. има какво да оправяш за да е по-кратко/четимо
Да, rubocop брои и end
за ред. Това в гайда е останало от миналата година, когато използвахме друг tool. Ръководството е в грешка тук.
Нашето решение има по максимум 4 реда в метод - помисли как можеш да реорганизираш нещата, така че да не се налагат толкова много случаи. Например, ако сложиш метод fetch_deep
в Array
можеш да си спестиш проверките дали нещото е Hash или Array и дали е число или стринг. :)