A Range object represents a collection of values that are between given begin and end values.| docs.ruby-lang.org
A Hash maps each of its unique keys to a specific value.| docs.ruby-lang.org
A String object has an arbitrary sequence of bytes, typically representing text or binary data. A String object may be created using String::new or as literals.| docs.ruby-lang.org