Turing Prep Chapter 4: Arrays, Hashes, and Nested Collections
Article Table of Contents
Preparing for Turing Series Index #
What follows is an eight-part series that will help you pick up useful information about a number of topics related to Ruby, specifically geared for students learning the Ruby programming language, as part of the Turing School’s Backend Software Development Program
It’s generally intended that you progress sequentially, but there’s no “right way” or “right order” to encounter these topics. You could convince me I have the order exactly backwards. I’d disagree, but only slightly.
I encourage you to skim around these chapters, get the “shape” of what’s to come, in your mind, and then dive in wherever you want. Good luck, and bug reports are welcome.
- Chapter 1: Make Mod 1 Easier Than It Otherwise Would Be
- Chapter 2: Your first passing tests!
- Chapter 3: Objects in Ruby and Mythical Creatures:
unicorn.rb
,dragon.rb
, andhobbit.rb
- Chapter 4: Arrays, Hashes, and Nested Collections you are here
- Chapter 5: Refactoring common errors - in
wizard.rb
- Chapter 6: Refactoring practice - Getting rid of
attr_accessors
inogre.rb
- Chapter 7: Building out the
medusa
mythical creature - Chapter 8: Refactoring the
medusa
mythical creature - Appendix: Troubleshooting Errors
So far, we’ve covered some string manipulation and did a few mythical creatures.
You totally don’t have to look through the screencasts in the order I’ve listed below. I just wanted to call out array/hash manipulation on its own page.
You can also look through the whole playlist.
Array Manipulation Exercises #
These are from ruby-exercises/data-types/collections/arrays.rb
I’ll add more screencasts for the other files in this directory soon:
> tree collections
collections
├── README.md
├── advanced_nested_collections
│ ├── nesting.rb // done
│ └── nesting_test.rb // done
├── arrays.rb // done, what you're reading right now
├── hashes.rb // coming soon
└── nested_collections.rb // coming soon
As I’ve mentioned before, I would recommend you try to stay ahead of me in this video. If you get stuck on making a test pass for more than a few minutes, check that spot of the video, then carry on.
This video is so long because I go into excruciating detail on each test, not just showing the given method that works, but showing how I would google for the right answers if I didn’t know them.
Googling is a skill. Get good at it. :)
Here’s an index of timestamps/what’s covered at that location for this Array manipulation video. #
- 1:10 - How to use this video
- 2:05 - test_0
- 2:28 - test_1
- 3:05 - test_2
- 3:35 - using “pry” for the first time in this file
- 4:53 - test_22
- 8:33 - test_3
- 9:20 - Anki flashcard post I mention
- 10:12 - test_4
- 14:10 - test_a
- 15:18 - test_5
- 18:17 - test_b
- 18:36 - test_c
- 19:08 - test_6
- 21:33 - test_7
- 23:02 - test_8
- 27:04 - test_9
- 30:19 - test_10
- 30:59 - test_11
- 31:41 - why read the docs?
- 32:37 - test_12
- 34:58 - test_13
- 36:05 - test_14
- 38:10 - suggested next steps
- 38:46 - write down Array methods in a notebook.
Advanced Nested Collections #
Inside the collections
directory, there’s another directory, advanced_nested_collections
; this is well worth your time to play around with.
Here’s a walk-through:
I cover a lot of things in the video; here’s the index:
- 0:04 - The “tree” command: https://github.com/MrRaindrop/tree-cli
- 0:14 -
cd
to the target file - 1:10 - the importance of process over specific answers
- 1:54 - I probably won’t be coming up with the “best” solutions, and that’s OK
- 2:50 - Copying relative and absolute file paths to the clipboard
- 3:15 - run all tests, all skipped
- 3:23 - def test_list_of_olive_garden_employees
- 3:33 - exploring the
stores
object in Pry - 4:29 - Start with other hash exercises; if you’ve not done any, this isn’t a good starting point.
- 4:50 - test_pancake_ingredients
- 5:42 - using .keys
- 6:30 - dealing with array of hashes
- 7:26 - test_rissotto_price
- 8:33 - test_big_mac_ingredients
- 9:52 - using .find; I used it wrong. Better usage examples: https://www.youtube.com/watch?v=2tTMAPT7rcw, https://apidock.com/ruby/Enumerable/find. Sorry.
- 10:40 - I’m still using it wrong. super sorry.
- 11:10 - Find is an Enumerable method, not Array method, which is why I had to look in a different spot in the docs
- 12:39 - test_list_of_restaurants
- 13:39 - test_list_of_dishes_names_for_olive_garden
- 14:20 - using .map for first time.
- 15:30 - convert .map to .each, per instructions
- 15:45 - using
continue
in pry to move to next item in list - 16:20 - difference between .each and .map
- 18:43 - test_list_of_employees_across_all_restaurants
- 21:13 - using ruby docs to get unstuck
- 22:10 - using .each with TWO arguments in block instead of one.
- 23:44 use .concat to avoid nested arrays
- 25:29 test_list_of_all_ingredients_across_all_restaurants
- 32:29 test_full_menu_price_for_olive_garden
- 37:13 test passes. Lets refactor, giving .reduce a shot! 😱
- 41:14 test_full_menu_for_olive_garden
- 48:38 I accidentally broke the prior test; fixing it
- 50:02 test_full_menu_price_for_olive_garden
- 53:51 it works! refactoring to use .reduce
- 1:03:00 explaining a gotcha with .reduce
When you’re done, consider taking a look at some of the more advanced refactoring guides:
Preparing for Turing Series Index #
What follows is an eight-part series that will help you pick up useful information about a number of topics related to Ruby, specifically geared for students learning the Ruby programming language, as part of the Turing School’s Backend Software Development Program
It’s generally intended that you progress sequentially, but there’s no “right way” or “right order” to encounter these topics. You could convince me I have the order exactly backwards. I’d disagree, but only slightly.
I encourage you to skim around these chapters, get the “shape” of what’s to come, in your mind, and then dive in wherever you want. Good luck, and bug reports are welcome.
- Chapter 1: Make Mod 1 Easier Than It Otherwise Would Be
- Chapter 2: Your first passing tests!
- Chapter 3: Objects in Ruby and Mythical Creatures:
unicorn.rb
,dragon.rb
, andhobbit.rb
- Chapter 4: Arrays, Hashes, and Nested Collections you are here
- Chapter 5: Refactoring common errors - in
wizard.rb
- Chapter 6: Refactoring practice - Getting rid of
attr_accessors
inogre.rb
- Chapter 7: Building out the
medusa
mythical creature - Chapter 8: Refactoring the
medusa
mythical creature - Appendix: Troubleshooting Errors